include <vector> using namespace std::vector; vector<T> vec;
当用到迭代器(iterator)去遍历的时候,
vector<T>::iterator iter;
必须保持vec的T和iter的T保持一致
例
include <vector> using namespace std::vector; vector<std::string> vString; for( int i = 0; i < 10; i++ ) { vString.push_back( "aaa" ); } for( vector<std::string>::iterator iter = vString.begin(); iter != vString.end(); iter++ ) { cout << *iter << endl; }
vector::iterator既可以读取容器(vector)里的元素,也可以改变容器(vector)里的元素的值;
for( vector<std::string>::iterator iter = vString.begin(); iter != vString.end(); iter++ ) { *iter = "bb" }
则vString里面的值则都为"BB";
还有一种是const_iterator,其实从字面意思就可以看出,前面有个const,则不能修改;只能用作读取。
for( vector<std::string>::const_iterator c_iter = vString.begin(); c_iter != vString.end(); c_iter++ ) { cout << *c_iter << endl; }
但是不能把const_iterator对象与const的iterator对象混淆。如果声明一个const迭代器时,必须初始化迭代器。一旦初始化后,就不能改变它的值。
注意:任何改变vector长度的操作都会使已存在的迭代器失效。例如,如果在使用迭代器的过程中,在使用push_back添加元素后,就不能使用之前的迭代器继续遍历了