我有一个矢量:
std::vector<User*> myFriends_;
Run Code Online (Sandbox Code Playgroud)
然后我有代码来查看元素是否theFriend
存在于向量中.
if (std::find(myFriends_.begin(), myFriends_.end(), theFriend)!=myFriends_.end())
return FAILURE;
Run Code Online (Sandbox Code Playgroud)
我想做点什么
User* toErease;
toErease=std::find(myFriends_.begin(), myFriends_.end(), theFriend);
if (toErease!=myFriends_.end())
return FAILURE;
myFriends_.erase(toErease); /// remove this element if its precent
Run Code Online (Sandbox Code Playgroud)
它会起作用吗?
find
返回元素的位置
erase
据我所知,需要索引.
std::find(myFriends_.begin(), myFriends_.end(), theFriend);
Run Code Online (Sandbox Code Playgroud)
返回一个类型的迭代器 std::vector<User*>::iterator
所以,你需要拥有
std::vector<User*>::iterator toErease ;
toErease=std::find(myFriends_.begin(), myFriends_.end(), theFriend);
// And then erase if found
if (toErease!=myFriends_.end())
{
/* Since container element is a pointer to User
you need to destroy it too ! */
delete *toErease ;
myFriends_.erase(toErease);
//... return SUCCESS ;
}
return FAILURE ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3806 次 |
最近记录: |