要擦除第n个,这样:xxx.erase(xxx.begin()+n);如下面的代码:include <vector>#include <iostream> int main( ){ std::vector<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto &i : c) { std::cout << i << " "; } std::cout << '\n'; ...
你用的不对,iter应该声明为 vector<Student>::iterator iter;然后在for里应该这样:for(iter = stu.begin(); iter != stu.end(); ++iter){ if(strcmp(id,iter->getStuId())==0)stu.erase(iter);erase要传一个迭代器而不是下标索引。
iterator erase ( iterator position );iterator erase ( iterator first, iterator last );Erase elements Removes from the vector container either a single element (position) or a range of elements ([first,last)).This effectively reduces the vector size by the number of elements removed,...
vector<int> v; // 增加元素 for (int i = 0; i < 10; ++i) v.push_back(i); // 删除元素 vector<int>::iterator iter = v.begin(); while (iter != v.end()) { iter = v.erase(iter); } 此代码不能用for,要用while,
= vt.end(); ){it = vt.erase(it);}任何改变 vector 长度的操作都会使已存在的迭代器失效。例如,在调用 push_back 之后,就不能再信赖指向 vector 的迭代器的值了。一个原则:对vector只要做了删除或是增加动作,就要示迭代器已经无效,必须重新从vector对象获取新的迭代器的值...
vector只能插入和删除尾部元素,建议用set容器,set容器默认排序并删除重复元素
vector用erase连续删除元素怎么会出错 说明你的Vir1里面是空的,在i = Vir1.erase(i);前面加一个判断 if( i != Vir1.end())