std::vector
std::vector<int>& vec = myNumbers; // use shorter name
vec.erase(std::remove(vec.begin(), vec.end(), number_in), vec.end());
或者我可以这样做:
auto it = find(vec.begin(), vec.end(), number_in);
vec.erase(it);
第二个更直观,我想,但是哪一个更快?
编辑:
向量中的元素是唯一的,我们不必担心一次删除几个元素。
最佳答案:
std::find
auto it = find(vec.begin(), vec.end(), number_in);
if (it != vec.end())
vec.erase(it);
这将确保您不会删除无效的迭代器。
所以这取决于你的需要。如果你想要一个正确的程序,第一个程序不需要进一步的干预就可以工作,但是第二个程序需要你的客户提供一个错误通知单,然后你必须去修复它(如上所述)。