26 votes

Enlever un élément spécifique d'un vecteur en c++

Supposons que j'ai un vecteur v et qu'il contient trois éléments: {1,2,3}.

Y a-t-il un moyen de supprimer spécifiquement 2 du vecteur afin que le vecteur résultant devienne {1,3}.

44voto

Dagang Points 2605
//effacer l'élément i-ième
myvector.erase (myvector.begin() + i);

(En comptant le premier élément dans le vecteur comme i=0)

28voto

Ken Bloom Points 27197

En supposant que vous cherchez l'élément contenant la valeur 2, pas la valeur à l'index 2.

#include
#include

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

(J'ai utilisé C++0x pour éviter une certaine surcharge, mais l'utilisation réelle de std::find et vector::erase ne nécessite pas C++0x)

10voto

Chris A. Points 3884

N'oubliez pas d'utiliser également l'idiome effacer-supprimer si vous supprimez plusieurs éléments.

1voto

Christo Points 2367
#include <iostream>
#include <vector>
using namespace std;

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

  // Définir des valeurs (de 1 à 10)
  for (i=1; i<=10; i++) myvector.push_back(i);

  // Supprimer le 6ème élément
  myvector.erase (myvector.begin()+5);

  // Supprimer les 3 premiers éléments:
  myvector.erase (myvector.begin(),myvector.begin()+3);

  cout << "myvector contient:";
  for (i=0; i

0voto

starriet Points 517

À partir de C++ 20, nous pouvons utiliser std::erase pour supprimer plusieurs éléments.

(pas besoin de "idiome effacer-supprimer")

#include 
#include 

int main()
{
    std::vector 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
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X