【新手】vector里erase函数的问题
- C/C++ code
Anime& find_pos() //这是我写的一个,查找容器元素的函数,返回查找到的元素引用,在main函数里测试后可用 下是我一个删除容器元素的函数void Delete(vector<Anime>& B){ cout<<"请先找出你要删除的作品"<<endl; B.erase(&(find_pos()));//这里报错}vector里的erase函数如果只写一个参数,是删除元素的地址,这里我用find_pos()查找的元素引用再取址来做参数,不知道有没有问题,编译的错误一直就在这里
错误是:no matching function for call to 'std::vector<Anime, std::allocator<Anime> >::erase(Anime*)'
可能问题跟erase也没什么关系0.0 是我其他地方弄错了
这个错误看不大懂 也不知道该怎么处理
[解决办法]
erase擦除的是用iterator定位的元素,比如:
- C/C++ code
for(vector<int>::iterator it=arr.begin(); it!=arr.end(); ) { if(*it == 8) { it = arr.erase(it); } else { ++it; } }