вытолкнуть определенный элемент из вектора в C ++ - PullRequest
8 голосов
/ 24 апреля 2011

так что предположим, что у меня есть вектор с именем v, и у него есть три элемента: 1,2,3

есть ли способ специально вытолкнуть 2 из вектора, чтобы результирующий вектор стал

1,3

Ответы [ 4 ]

21 голосов
/ 24 апреля 2011
//erase the i-th element
myvector.erase (myvector.begin() + i);

(Подсчет первого элемента в векторе как i=0)

15 голосов
/ 24 апреля 2011

Предполагается, что вы ищете элемент, содержащий значение 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::find и vector::erase не требует C ++ 0x)

6 голосов
/ 24 апреля 2011

Также не забывайте использовать идиому erase-remove , если вы удаляете несколько элементов.

1 голос
/ 24 апреля 2011
#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...