迭代器和向量的Seg错误
Seg fault with iterators and vectors
我似乎在用迭代器显示向量中的项时遇到了问题。可能,我只需要另一双眼睛就可以看到它
vector<string> tempVector;
vector<string>::iterator it;
it = tempVector.begin();
tempVector.push_back("1");
cout << *it;
我知道这不是完整的代码,但这是唯一运行的部分。输出为segfault。迭代器不是指向向量的开头吗?我本以为能拿到1分。
如果对vector::reserve()
的调用碰巧需要重新分配,则会使所有现有迭代器失效。
引用C++标准,23.3.6.3[矢量容量]
此时发生重新定位,当且仅当当前容量小于reserve()的参数时。[…]重新定位将使引用序列中元素的所有引用、指针和迭代器无效。
EDIT:编辑后,您将调用vector::push_back()
,如果需要重新分配,它还会使所有迭代器无效。迭代器无效规则可能会有所帮助。
相关文章:
- C++ - 将元素按升序插入数组的 SEG 错误
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 字符串上的合并排序上的 Seg 错误
- 导致 Seg 错误的 SingleLinkedList 的析构函数
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- 函数抛出seg错误,我不知道为什么
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- 由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
- 尝试访问 3D 矢量中的元素时出现 Seg 错误
- 垫子对象数组太大会导致 Seg 错误
- 为什么push_back成矢量<矢量<int>>导致 seg 错误?
- 在向量中存储字符串存在 SEG 错误
- 更改本地类名时出现 seg 错误
- 使用 ->GetString( " ") 时出现 Seg 错误,它位于单独的类中
- 将字符数组转换为 std::string 以传递到 std::bitset seg 错误
- 字符和 int 连接何时会导致 seg 错误?
- 静态数组溢出堆栈(seg 错误 11)仅在类定义内部时,否则不会..?
- .EOF 在读取文件时导致 Seg 错误:FIXXED
- 在 qt5 中使用 QSharedPointer 时出现 Seg 错误
- 为什么我的 if 语句会出现 seg 错误?