三、C++数据类型
10、vector容器类型
使用vector容器时,必须要包含相关的头文件:
#include <vector>
初始化vector容器的几种方式【使用了vector类的几种构造函数】:
1、模仿数组初始化方式
vector< int > ivec( 10 ); //因为这里是构造函数,于是需要用小括号
2、vector类的缺省初始化
vector< int > ivec;
3、显式为vector数组初始化
vector< int > ivec( 10, -1 );//给数组赋值十个负一
4、拷贝数组地址为vector初始化
int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
vector< int > ivec( ia, ia+6 );//一定是地址,不能是数组的值,也可以使用取址符把一个中间区间的元素分配给vector
5、使用另外一个vector初始化
vector< string > svec;
vector< string > user_names( svec );
vector的使用有两种风格,第一种是数组风格,第二种是STL容器风格。
和数组一样,vector可以通过下标访问元素,用size()和empty()来检查大小。
ivec.size(); //返回元素个数
ivec.empty(); //返回是否是空的数组
在vector中插入或者删除元素:
ivec.push_back(val);//在数组最后插入val
ivec.pop_back();//弹出数组最后元素
ivec.insert(pos,n,val);//在pos位置【是一个地址】之前插入n个值为val的元素
ivec.insert(pos,{a,b,c});//在pos位置之前插入a,b,c三个元素
ivec.erase(pos);//删除pos位置上的元素
ivec.erase(pos1,pos2);//删除pos1到pos2之间的元素,包含pos1,不包含pos2
vector除了使用下标来访问元素,还可以通过迭代器来操作和访问元素:【在这之前先要知道怎么返回vector的地址】
ivec.begin();
ivec.end();
知道了怎么获取vector的地址之后,就能够通过它操作集中的迭代器对元素进行访问了:
vector<string>::iterator it = text.begin();
也可以使用auto,一般我们不关心迭代器的类型
auto iterator it = text.begin();
迭代器具有指针的功能,可以通过解引用来访问元素的值。