如果必须在中间位置插入元素,考虑在输入阶段使用 list,输入完成后则将 list 中的内容拷贝到 vector 中
既需要随机访问元素,又需要在容器中间位置插入元素,则需要对比测试两种容器的性能
迭代器
所有标准库容器都可以使用迭代器
可以使用迭代器的类型拥有返回迭代器的成员函数
vector<T> vec{
t1, t2,..., tn};auto b = vec.begin(), e = vec.end();// b 指向 vec 的第一个元素,e 指向 vec 的尾后元素// 一般情况下不必关心迭代器本身的类型,因此此处使用 auto
空容器的 begin() 和 end() 返回的都是尾后迭代器返回的都是尾后迭代器
使用迭代器时不允许改变容器的大小
迭代器运算
*iter // 解引用,返回 iter 所指元素的引用
iter->member // 返回 iter 所指元素中的 member 成员,相当于 (*iter).member++iter,--iter // 移动 iter,forward_list 不支持迭代器的递减运算// 以下只适用于 string、vector、deque 和 array
iter + n, iter - n
iter += n, iter -= n
iter1 == iter2, iter1 != iter2
iter1 - iter2
iter1 <,<=,>=,> iter2
使用迭代器遍历处理容器:
vector<int> ivec{
0,1,2,3,4,5,6,7,8,9};for(auto iter = ivec.begin(); iter != ivec.end();++iter)*iter *=*iter;for(auto i : ivec)
cout << i <<" ";
cout << endl;// output: 0 1 4 9 16 25 36 49 64 81
string text ="hello, world!";for(<