从 std::vector中删除元素>
我的编译器抱怨。
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<string> vec[2];
vec[0].push_back("test1");
vec[0].push_back("test2");
cout << vec[0][0] << endl;
vec[0].erase(vec.begin());
cout << vec[0][1] << endl;
}
当我调用擦除时出了什么问题?
My compiler complains.
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<string> vec[2];
vec[0].push_back("test1");
vec[0].push_back("test2");
cout << vec[0][0] << endl;
vec[0].erase(vec.begin());
cout << vec[0][1] << endl;
}
What is wrong when I call erase?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
vec
是一个vector
数组。我相信你的意思是vec[0].begin()
像这样:vec
is an array ofvector<string>
s. I believe you meantvec[0].begin()
like so:删除第一个元素后,就只剩下一个了。该元素位于位置 0,这意味着索引 1 超出范围 -> 1。未定义的行为。
After you erased the first element, there's only one left. This one element is at position 0, which means index 1 is off bounds -> undefined behaviour.