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

时间:2011-04-24 02:38:12

标签: c++ vector

所以假设我有一个名为v的向量,它有三个元素:1,2,3

有没有办法从矢量中专门弹出2,所以得到的矢量变为

1,3

4 个答案:

答案 0 :(得分:21)

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

(将向量中的第一个元素计为i=0

答案 1 :(得分:15)

假设您正在寻找包含值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)

答案 2 :(得分:5)

另外,如果要删除多个元素,请记得使用erase-remove idiom

答案 3 :(得分:1)

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