【发布时间】:2020-04-29 14:14:48
【问题描述】:
我想从向量中删除一个元素,但不能保证该元素存在。 我在网上查看过,但没有找到有关擦除删除习语如何处理不在容器中的值的信息。
我的向量是这样声明的:(在代码的其他部分中添加/修改了成员)
std::vector<Person*> _members
我想在包含 _members 作为属性的类 Group 中创建一个删除方法,以尝试从组中删除给定的人。
我目前正在使用:(要删除的人是指向 Person 对象的指针)
_members.erase(std::remove(_members.begin(), _members.end(), person_to_remove), _members.end());
这将如何处理试图删除不在向量中的 Person ?理想情况下,我还想返回一个布尔值来确认删除是否成功,有没有办法用我当前的实现来做到这一点?
【问题讨论】:
-
remove调用将迭代器返回到与要删除的值匹配的第一个元素。如果没有这个值,它将返回_members.end(),然后调用erase将不会删除任何元素。
标签: c++ c++17 erase-remove-idiom