簡體   English   中英

從 c++ 中的向量中彈出特定元素

[英]pop a specific element off a vector in c++

所以假設我有一個叫做 v 的向量,它有三個元素:1,2,3

有沒有辦法專門從向量中彈出 2 使生成的向量變為

1,3

//erase the i-th element
myvector.erase (myvector.begin() + i);

(計算向量中的第一個元素,如i=0

假設您正在尋找包含值2的元素,而不是索引2處的值。

#include<vector>
#include<algorithm>

int main(){
   std::vector<int> a={1,2,3};
   a.erase(std::find(a.begin(),a.end(),2));
}

(我使用C ++ 0x來避免一些樣板,但實際使用std::findvector::erase不需要C ++ 0x)

另外,如果要刪除多個元素,請記住使用erase-remove慣用法

#include <iostream>
#include <vector>
using namespace std;

int main ()
{
  unsigned int i;
  vector<unsigned int> myvector;

  // set some values (from 1 to 10)
  for (i=1; i<=10; i++) myvector.push_back(i);

  // erase the 6th element
  myvector.erase (myvector.begin()+5);

  // erase the first 3 elements:
  myvector.erase (myvector.begin(),myvector.begin()+3);

  cout << "myvector contains:";
  for (i=0; i<myvector.size(); i++)
    cout << " " << myvector[i];
  cout << endl;

  return 0;
}

C++ 20 開始,我們可以使用std::erase刪除多個元素。

(不需要“ erase-remove idiom ”)

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v{1,2,2,3,4,5};
      
    std::erase(v, 2);
    
    for(auto e : v) std::cout << e << " ";
    std::cout << '\n';

    // output: 1 3 4 5
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM