【发布时间】:2023-04-04 08:46:01
【问题描述】:
vector<int> myVector;
假设向量中的值是这样的(按此顺序):
5 9 2 8 0 7
如果我想擦除包含“8”值的元素,我想我会这样做:
myVector.erase(myVector.begin()+4);
因为那会删除第 4 个元素。但是有没有办法根据值“8”擦除元素?喜欢:
myVector.eraseElementWhoseValueIs(8);
还是我只需要遍历所有向量元素并测试它们的值?
【问题讨论】:
-
@BenVoigt:你的问题很自大——显然这个人无法回答,你应该做的是创建一个涵盖你提到的所有案例的答案。
-
@slashmais:哦,废话,我的澄清问题很简单,不需要专业的程序员来回答。而且我无法涵盖“你想做什么?”的所有可能值。对于所有三种情况。仅针对“没有匹配元素”的情况,可能的行为包括“无”、“抛出异常”、“返回错误”、“退出进程(可能通过
assert())”、“向std::cerr发送消息“......甚至那些也不是详尽无遗的。不,提问者需要说明错误处理策略,即使没有找到匹配项也是错误。 -
... QED 案例。我认为
标签: c++ vector stl erase erase-remove-idiom