使用迭代器和向量进行段错误

Ci3*_*Ci3 1 c++ vector

我似乎在使用迭代器在向量中显示项目时遇到问题.可能,我只需要另一组眼睛来看它.

vector<string> tempVector;
vector<string>::iterator it;


it = tempVector.begin();
tempVector.push_back("1");
cout << *it;
Run Code Online (Sandbox Code Playgroud)

我知道这不是完整的代码,但它是唯一运行的部分.输出是段错误.迭代器是否指向向量的开头?我本以期待cout获得"1".

Cub*_*bbi 5

vector::reserve()如果碰巧需要重新分配,则调用使所有现有迭代器无效.

引用C++标准,23.3.6.3 [vector.capacity]

当且仅当当前容量小于reserve()的参数时,才会发生重新分配.[...]重新分配使引用序列中元素的所有引用,指针和迭代器无效.

编辑:编辑后,您有一个调用vector::push_back(),如果需要重新分配,它也会使所有迭代器无效.迭代器失效规则可能会有所帮助.