C++高手啊,过来帮帮忙吧,vector里面的函数erase怎么用的?你们看我的这个为什么就有错误呢??
发布网友
发布时间:2022-04-23 05:01
我来回答
共3个回答
热心网友
时间:2023-10-15 15:19
你用的不对,iter应该声明为 vector<Student>::iterator iter;
然后在for里应该这样:
for(iter = stu.begin(); iter != stu.end(); ++iter)
{
if(strcmp(id,iter->getStuId())==0)
stu.erase(iter);
erase要传一个迭代器而不是下标索引。
热心网友
时间:2023-10-15 15:20
是编译错误吧!erase是删除指定数组成员的意思,但是参数不是int类型,而是vector的迭代器。
迭代器定义如下
vector<Student>::iterator a = stu.begin();
定义好的迭代器也可以执行 a++ a-- 操作追问谢谢你给我的回答,我明白了。。。。。
热心网友
时间:2023-10-15 15:20
.erase()的参数是迭代器不是下标索引。
对于你的程序简单的修改方法如下:
将stu.erase(iter); 改成stu.erase(stu.begin()+iter);追问谢谢你给我的回答,你说的很简单,但是很对,谢谢了。。。。。