1、声明:
#include<vector>
using std::vector;
2、创建与初始化
vector 一个容器,像一个栈一样。
vector<int> a; 定义
vector<string> b;
vector<int> c(10); 创建一个包含10个元素的容器c,默认下有初始类型的初始化的十个值都为0
vector<string> d(10);
创建一个d,10个空字符串,当自己定义的类,用构造函数去初始化
vector<int> c(10,1); 创建一个包含十个元素都为1的容器c
vector<string> d(10,"abcdefg"); 创建一个包含十个元素都为string“abcdefg”的容器d
3、操作
vector<T> v;
v.empty()
v
空返回true,不空返回false
v.size() v元素个数
v.push_back(t) v的末尾加上一个t的元素
v[n] 返回v中位置为n的元素
不能通过下标的赋值来添加元素,下标只能访问和修改元素,如将容器元素全部赋值为0
for(vector<int>::size_type ix=0; ix !=v.size(); ix++)
v[ix]=0;
//前提已经建好一个size元素个的容器,size=0也可以
正确的添加循环:
for(vector<int>::size_type ix=0; ix!=v.size();ix++)
v.push_back(0);
这里有两个编程习惯的问题,C++程序员优先用!=而不是用<编写循环条件,调用size成员函数而不是在循环钱保存它的值然后循环条件中调
用, 因为循环中可能会修改到size的值,具体可以参见C++primer P82.
4、迭代器
迭代器用来顺序访问的,比下标访问要更常用。
迭代器用来遍历容器内的元素,并访问他的值。迭代器可以自增,用*解引用可以访问指向的值。
vector<int>::iterator iter;
v.begin()
容器的第一个元素的迭代器返回值
v.end()
容器的最后一个元素的下一个的迭代器返回值,是指向一个不存在的元素的
利用迭代器将一个容器v的所有元素置为0
for(vector<int>::interator iter=v.begin(); iter!=v.end(); ++iter)
*iter=0;