vector<int> myVector;并說向量中的值是這個(按此順序):5 9 2 8 0 7如果我想刪除包含“ 8”值的元素,我想我會這樣做:myVector.erase(myVector.begin()+4);因為那樣會刪除第四個元素。但是,是否有任何方法可以基于值“ 8”擦除元素?喜歡:myVector.eraseElementWhoseValueIs(8);還是只需要遍歷所有矢量元素并測試其值?
3 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
怎么樣std::remove():
#include <algorithm>
...
vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());
這種組合也稱為擦除刪除慣用語。

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
您可以std::find用來獲取值的迭代器:
#include <algorithm>
std::vector<int>::iterator position = std::find(myVector.begin(), myVector.end(), 8);
if (position != myVector.end()) // == myVector.end() means the element was not found
myVector.erase(position);

DIEA
TA貢獻1820條經驗 獲得超2個贊
您不能直接這樣做。您需要使用std::remove算法將要擦除的元素移動到向量的末尾,然后使用erase函數。類似于:myVector.erase(std::remove(myVector.begin(), myVector.end(), 8), myVec.end());。有關更多詳細信息,請參見矢量中的此擦除元素。
- 3 回答
- 0 關注
- 375 瀏覽
添加回答
舉報
0/150
提交
取消