亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++通過值而不是位置擦除矢量元素?

C ++通過值而不是位置擦除矢量元素?

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

3 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

怎么樣std::remove():


#include <algorithm>

...

vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());

這種組合也稱為擦除刪除慣用語。


查看完整回答
反對 回復 2019-10-23
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

您可以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);


查看完整回答
反對 回復 2019-10-23
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

您不能直接這樣做。您需要使用std::remove算法將要擦除的元素移動到向量的末尾,然后使用erase函數。類似于:myVector.erase(std::remove(myVector.begin(), myVector.end(), 8), myVec.end());。有關更多詳細信息,請參見矢量中的此擦除元素。


查看完整回答
反對 回復 2019-10-23
  • 3 回答
  • 0 關注
  • 462 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號