1.概述
对于C++编程语言而言,stl库是一个非常重要的库,其中的vector容器可以说是使用频率极高的一个容器。本文将系统性地介绍vector容器的用法。
2.vector容器的定义
vector容器是一个封装了动态大小数组的顺序容器,它能够存储任意类型的元素。同样是连续的内存空间,但vector容器的大小可以根据需要进行动态增长或缩小。
2.1 vector的定义
我们可以通过以下代码来定义一个vector容器:
#include <vector>
using namespace std;
vector<int> vec; //定义一个空的vector容器
2.2 vector容器的初始化
vector容器的初始化方式如下:
vector<int> vec1; //不带参数的构造函数
vector<int> vec2(10); //带一个参数,所有元素的值为0
vector<int> vec3(10, 1); //带两个参数,所有元素的值均为1
vector<int> vec4{1, 2, 3}; //使用初始值列表初始化
vector<int> vec5(vec4); //使用另一个vector容器初始化
3.vector容器的访问和遍历
3.1访问vector中的元素
可以使用[]操作符访问vector中的元素:
vector<int> vec{1,2,3,4,5};
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<" ";
}
以上代码中,使用size()方法获取了vector的大小。我们可以使用vector提供的at()方法获取元素:
vector<int> vec{1,2,3,4,5};
for(int i=0;i<vec.size();i++){
cout<<vec.at(i)<<" ";
}
3.2使用迭代器遍历vector
迭代器提供了一种通用的方式来遍历容器。我们可以使用以下方式来遍历vector:
vector<int> vec{1,2,3,4,5};
for(auto it=vec.begin();it!=vec.end();it++){
cout<<*it<<" ";
}
以上代码中,使用begin()方法获取vector容器的首地址。end()方法获取vector容器的末尾地址,使得迭代器可以遍历整个vector。事实上,begin()和end()方法也可以使用const_iterator类型来声明。
4.vector容器的属性和方法
4.1获取vector容器的大小
可以使用size()方法获取vector容器的大小:
vector<int> vec{1,2,3,4,5};
cout<<"vector容器的大小为:"<<vec.size();
4.2向vector容器中添加元素
可以使用push_back()方法向vector容器中添加元素:
vector<int> vec{1,2,3,4,5};
vec.push_back(6); //向vector容器中添加元素6
4.3删除vector容器中的元素
可以使用erase()方法删除vector容器中的元素,该方法的参数可以是迭代器、区间、以及某个值。以下是两个示例:
//删除vector容器中的元素,方法一:
vector<int> vec{1,2,3,4,5};
vec.erase(vec.begin()+2); //删除第三个元素
for(auto it=vec.begin();it!=vec.end();it++){
cout<<*it<<" ";
}
//删除vector容器中的元素,方法二:
vector<int> vec{1,2,3,4,5};
auto it=vec.begin();
while(it!=vec.end()){
if(*it%2==0)
it=vec.erase(it); //删除偶数
else
it++;
}
for(auto it=vec.begin();it!=vec.end();it++){
cout<<*it<<" ";
}
4.4获取vector容器的第一个元素和最后一个元素
可以使用front()方法和back()方法获取vector容器的第一个元素和最后一个元素:
vector<int> vec{1,2,3,4,5};
cout<<"vector容器的第一个元素为:"<<vec.front()<<endl;
cout<<"vector容器的最后一个元素为:"<<vec.back();
4.5将vector容器的元素排序
可以使用sort()方法将vector容器的元素排序:
vector<int> vec{5,4,3,2,1};
sort(vec.begin(), vec.end()); //默认升序排序
for(auto it=vec.begin();it!=vec.end();it++){
cout<<*it<<" ";
}
5.总结
本文介绍了vector容器的定义、初始化、访问和遍历、属性和方法等方面的知识,以及一些vector常用的操作。掌握vector容器的使用,将有利于我们更好地进行程序设计。