读书人

【新手】vector里erase函数的有关问题

发布时间: 2012-09-15 19:09:28 作者: rapoo

【新手】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;        }    } 

读书人网 >C++

热点推荐