C++ STL 容器篇之向量vector
C++STL 容器篇之向量vectorvector是我们经常使用的一个容器,可以看他看作为一个不定长数组。不仅如此,它还把一些常用的操作封装在了vector类型内。声明vector是一个模板类,每次使用时需要定义类型,例如vector a这样来声明一个vector。vector是一个类似于int a[]的整数数组。操作下面列举一些vector常用的操作函数名作用...
·
C++ STL 容器篇之向量vector
vector是我们经常使用的一个容器,可以看他看作为一个不定长数组。不仅如此,它还把一些常用的操作封装在了vector类型内。
声明
vector是一个模板类,每次使用时需要定义类型,例如vector a这样来声明一个vector。vector是一个类似于int a[]的整数数组。
操作
下面列举一些vector常用的操作
函数名 | 作用 |
---|---|
push_back | 在vector的最后添加一个数据 |
pop_back | 删除vector最后一个元素 |
at | 返回相应编号位置的值 |
begin | 得到vector头的指针 |
end | 得到vector最后一个位置+1的指针 |
front | 得到vector头的引用 |
back | 得到vector的最后一个单元的引用 |
max_size | 返回vector最大的大小 |
capacity | 返回当前vector分配的大小 |
size | 返回当前的vector大小 |
resize | 修改档期vector所分配空间的大小 |
erase | 删除指针所指向的数据线 |
clear | 清空vector |
empty | 判断vector是否为空 |
swap | 与另一个vector交换数据 |
使用示例
下面我们通过对一段程序来展示如何使用vector。在程序中我们深入的了解一下如何使用vector。
#include<iostream>
#include<vector>
#include<iterator>
using namespace std;
int main(){
vector<int> demo;//定义一个类型为int的vector 名为demo
if (demo.empty()) {
cout<<"如果demo是空的,则demo.empty()的返回值为True"<<endl;
}
for (int i = 0; i < 10; i++) {//在demo中插入0~9共10个数字
demo.push_back(i); //在demo的末尾插入数据
}
for (int i = 0; i < demo.size(); i++){
//输出demo中的所有的值,demo.size()返回demo中共有多少个数据
//vector可以像数组一样,通过下标来获取值
cout << demo[i]<<" ";
}
cout<<endl;
cout<<"通过demo.at(3)来获取demo中第4个元素的值,即demo[3]的值为:"<<demo.at(3)<<endl;
demo.pop_back();//删除demo中的最后一个元素
for (int i = 0; i < demo.size(); i++){
//再次输出demo中所有的值
cout << demo[i]<<" ";
}//此时只输出了0~8 vector中的最后一个元素9已经被删除
cout<<endl;
//下面我们在结合迭代器来演示vector的一些操作,以及迭代器的一些简单的操作。
vector<int>::iterator it;//定义一个vector<int>类型的迭代器,名为it
it = demo.begin();//给迭代器it赋值,为demo的首位置,即demo[0]的位置。begin()返回vector的第一个位置。
it = it + 2;//我们可以通过+和-来移动it的位置,it+2后所指的位置为demo中第3个位置,即demo[2]
demo.erase(it);//erase()的作用为删除当前迭代器所指位置的元素,并将后面的所有元素向前移动一位。这这里面即删除demo[2],后面的元素向前移动一位。
for (int i = 0; i < demo.size(); i++){
//我们可以输出来查看demo中的值,发现只有0 1 3 4 5 6 7 8 里面原本的元素“2”已经被删除
cout << demo[i]<<" ";
}
cout<<endl;
//我们在用vector时,通常会有迭代器对他进行操作,例如输出vector中所有的元素,我们除了上面的方法,也可以使用迭代器来进行
for (it = demo.begin(); it != demo.end(); it++) {
//begin()返回vector中首元素的位置,end()返回vector中最后一个元素+1的位置
cout<<*it<<" ";//这边的迭代器是指针,所以我们要用*it才获取所指向地址的内容
}
cout<<endl;
if (demo.empty()) {
cout<<"如果demo是空的,则demo.empty()的返回值为True"<<endl;
}
else{
cout<<"当前vector不为空"<<endl;
demo.clear();//clear()函数是作用是清空vector的所有元素
if (demo.empty()) {
cout<<"现在已经通过clear()函数清空vector中的所有内容"<<endl;
}
}
return 0;
}
输出结果为:
如果demo是空的,则demo.empty()的返回值为True
0 1 2 3 4 5 6 7 8 9
通过demo.at(3)来获取demo中第4个元素的值,即demo[3]的值为:3
0 1 2 3 4 5 6 7 8
0 1 3 4 5 6 7 8
0 1 3 4 5 6 7 8
当前vector不为空
现在已经通过clear()函数清空vector中的所有内容
Program ended with exit code: 0
这段程序大家也可以自己编译在自己的机器上运行一下,来帮助理解vector的一些操作。
更多推荐
已为社区贡献4条内容
所有评论(0)