在c++中从向量中取出一个特定的元素

pop a specific element off a vector in c++

本文关键字:一个 元素 c++ 向量      更新时间:2023-10-16

假设我有一个向量v它有三个元素:1,2,3

是否有办法从向量中抽取2,使结果向量变成

1, 3

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

(将vector中的第一个元素算作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)

另外,如果要删除多个元素,请记住使用擦除-删除习惯用法。

#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习语")

#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
}