logo

Vecteur en C++ STL

Les vecteurs sont identiques aux tableaux dynamiques avec la possibilité de se redimensionner automatiquement lorsqu'un élément est inséré ou supprimé, leur stockage étant géré automatiquement par le conteneur. Les éléments vectoriels sont placés dans un stockage contigu afin qu'ils puissent être consultés et parcourus à l'aide d'itérateurs. Dans les vecteurs, les données sont insérées à la fin. L'insertion à la fin prend un temps différentiel, car il peut parfois être nécessaire d'étendre le tableau. La suppression du dernier élément ne prend qu'un temps constant car aucun redimensionnement n'a lieu. L'insertion et l'effacement au début ou au milieu sont linéaires dans le temps.

Qu’est-ce que std::vector en C++ ?

std :: vecteur en C++ est le modèle de classe qui contient le conteneur vectoriel et ses fonctions membres. Il est défini à l'intérieur du En tête de fichier. Les fonctions membres de la classe std::vector fournissent diverses fonctionnalités aux conteneurs vectoriels.

Syntaxe pour déclarer un vecteur en C++

  std::vector   vectorName;>

où le type de données est le type de données de chaque élément du vecteur. Vous pouvez supprimer le std :: si vous avez déjà utilisé l'espace de noms std.



Initialisation de Vector en C++

Nous pouvons initialiser un vecteur des manières suivantes :

1. Initialisation à l'aide d'une liste

Cette initialisation se fait avec une déclaration. Ici, nous transmettons la liste des éléments au constructeur de vecteur pour créer un vecteur avec les éléments spécifiés.

  vector   name({   value1, value2, value3 ....  });>

2. Initialisation Avec une valeur unique

Cette initialisation se fait également avec déclaration. Ici, nous spécifions la taille du vecteur puis initialisons chaque élément du vecteur avec la valeur.

  vector   name(size, value);>

3. Initialisation à partir d'un autre vecteur

Cette initialisation est utilisée pour créer un vecteur qui est une copie exacte de other_vec.

  vector   name(other_vec);>

Certaines fonctions membres couramment utilisées de la classe std::vector sont écrites ci-dessous :

Itérateurs

  1. commencer() – Renvoie un itérateur pointant vers le premier élément du vecteur
  2. fin() – Renvoie un itérateur pointant vers l’élément théorique qui suit le dernier élément du vecteur
  3. rcommencer() – Renvoie un itérateur inverse pointant vers le dernier élément du vecteur (début inversé). Il passe du dernier au premier élément
  4. rend() – Renvoie un itérateur inverse pointant sur l'élément théorique précédant le premier élément du vecteur (considéré comme fin inverse)
  5. ccommencer() – Renvoie un itérateur constant pointant vers le premier élément du vecteur.
  6. quelques() – Renvoie un itérateur constant pointant vers l'élément théorique qui suit le dernier élément du vecteur.
  7. crbegin() – Renvoie un itérateur inverse constant pointant vers le dernier élément du vecteur (début inverse). Il passe du dernier au premier élément
  8. crend() – Renvoie un itérateur inverse constant pointant sur l’élément théorique précédant le premier élément du vecteur (considéré comme fin inverse)

C++




// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1 ;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Output of begin and end: '>;> >for> (>auto> i = g1.begin(); i != g1.end(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of cbegin and cend: '>;> >for> (>auto> i = g1.cbegin(); i != g1.cend(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of rbegin and rend: '>;> >for> (>auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> >cout << *ir <<>' '>;> > >cout <<>' Output of crbegin and crend : '>;> >for> (>auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> >cout << *ir <<>' '>;> > >return> 0;> }>

>

>

Sortir

Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>

Capacité

  1. taille() – Renvoie le nombre d'éléments dans le vecteur.
  2. taille max() – Renvoie le nombre maximum d'éléments que le vecteur peut contenir.
  3. capacité() – Renvoie la taille de l'espace de stockage actuellement alloué au vecteur exprimée en nombre d'éléments.
  4. redimensionner(n) – Redimensionne le conteneur pour qu’il contienne « n » éléments.
  5. vide() – Indique si le conteneur est vide.
  6. rétrécir_to_fit() – Réduit la capacité du conteneur pour l’adapter à sa taille et détruit tous les éléments au-delà de la capacité.
  7. réserve() – Demande que la capacité vectorielle soit au moins suffisante pour contenir n éléments.

C++




// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1 ;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Size : '> << g1.size();> >cout <<>' Capacity : '> << g1.capacity();> >cout <<>' Max_Size : '> << g1.max_size();> > >// resizes the vector size to 4> >g1.resize(4);> > >// prints the vector size after resize()> >cout <<>' Size : '> << g1.size();> > >// checks if the vector is empty or not> >if> (g1.empty() ==>false>)> >cout <<>' Vector is not empty'>;> >else> >cout <<>' Vector is empty'>;> > >// Shrinks the vector> >g1.shrink_to_fit();> >cout <<>' Vector elements are: '>;> >for> (>auto> it = g1.begin(); it != g1.end(); it++)> >cout << *it <<>' '>;> > >return> 0;> }>

>

mission impossible tous les films
>

Sortir

Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>

Accès aux éléments

  1. opérateur de référence [g] – Renvoie une référence à l’élément à la position « g » dans le vecteur
  2. à(g) – Renvoie une référence à l’élément à la position « g » dans le vecteur
  3. devant() – Renvoie une référence au premier élément du vecteur
  4. dos() – Renvoie une référence au dernier élément du vecteur
  5. C++




    // C++ program to illustrate the> // element access in vector> #include> using> namespace> std;> > int> main()> {> >vector<>int>>g1 ;> > >for> (>int> i = 1; i <= 10; i++)> >g1.push_back(i * 10);> > >cout <<>' Reference operator [g] : g1[2] = '> << g1[2];> > >cout <<>' at : g1.at(4) = '> << g1.at(4);> > >cout <<>' front() : g1.front() = '> << g1.front();> > >cout <<>' back() : g1.back() = '> << g1.back();> > >// pointer to the first element> >int>* pos = g1.data();> > >cout <<>' The first element is '> << *pos;> >return> 0;> }>

    >

    >

    Sortir

    Reference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>

    Modificateurs

    1. attribuer() – Il attribue une nouvelle valeur aux éléments vectoriels en remplaçant les anciens
    2. repousser() – Il pousse les éléments dans un vecteur par l’arrière
    3. pop_back() – Il est utilisé pour faire apparaître ou supprimer des éléments d’un vecteur par l’arrière.
    4. insérer() – Il insère de nouveaux éléments avant l’élément à la position spécifiée
    5. effacer() – Il est utilisé pour supprimer des éléments d’un conteneur à partir de la position ou de la plage spécifiée.
    6. échanger() – Il est utilisé pour échanger le contenu d’un vecteur avec un autre vecteur du même type. Les tailles peuvent différer.
    7. clair() – Il permet de supprimer tous les éléments du conteneur vectoriel
    8. remplacer() – Il étend le conteneur en insérant un nouvel élément à la position
    9. emplace_back() – Il est utilisé pour insérer un nouvel élément dans le conteneur vectoriel, le nouvel élément est ajouté à la fin du vecteur

    C++




    // C++ program to illustrate the> // Modifiers in vector> #include> #include> using> namespace> std;> > int> main()> {> >// Assign vector> >vector<>int>>dans;> > >// fill the vector with 10 five times> >v.assign(5, 10);> > >cout <<>'The vector elements are: '>;> >for> (>int> i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }>

    >

    trimestres de l'année
    >

    Sortir

    The vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>

    La complexité temporelle pour effectuer diverses opérations sur les vecteurs est-

    • Accès aléatoire – constante O(1)
    • Insertion ou suppression d'éléments à la fin – constante O(1)
    • Insertion ou suppression d'éléments – linéaire dans la distance jusqu'à la fin du vecteur O(N)
    • Connaître la taille – constante O(1)
    • Redimensionner le vecteur - Linéaire O (N)

    Toutes les fonctions membres de std :: vector

    Voici la liste de toutes les fonctions membres de la classe std::vector en C++ :

    Fonction vectorielle

    Description

    repousser()

    Ajoute un élément à la fin du vecteur.

    pop_back()

    Supprime le dernier élément du vecteur.

    taille()

    Renvoie le nombre d'éléments dans le vecteur.

    taille max()

    Renvoie le nombre maximum d'éléments que le vecteur peut contenir.

    redimensionner()

    Modifie la taille du vecteur.

    vide()

    Vérifie si le vecteur est vide.

    opérateur[]

    Accède à l’élément à une position spécifique.

    à()

    Accède à l'élément à une position spécifique, avec vérification des limites.

    devant()

    Accède au premier élément du vecteur.

    dos()

    Accède au dernier élément du vecteur.

    commencer()

    Renvoie un itérateur pointant vers le premier élément du vecteur.

    fin()

    Renvoie un itérateur pointant vers l’élément après la fin du vecteur.

    rcommencer()

    Renvoie un itérateur inverse pointant vers le dernier élément du vecteur.

    rend()

    Renvoie un itérateur inverse pointant vers l'élément précédant le premier élément du vecteur.

    ccommencer

    Renvoie const_iterator au début

    quelques

    Renvoie const_iterator pour terminer

    crcommencer

    Renvoie const_reverse_iterator pour inverser le début

    croire

    Renvoie const_reverse_iterator à la fin inversée

    insérer()

    structure de contrôle python
    Insère des éléments à une position spécifique dans le vecteur.

    effacer()

    Supprime des éléments d'une position ou d'une plage spécifique dans le vecteur.

    échanger()

    Échange le contenu du vecteur avec celui d'un autre vecteur.

    clair()

    Supprime tous les éléments du vecteur.

    remplacer()

    Construit et insère un élément dans le vecteur.

    emplace_back()

    Construit et insère un élément à la fin du vecteur.

    attribuer()

    Attribue de nouvelles valeurs aux éléments vectoriels en remplaçant les anciennes.

    capacité()

    Renvoie la taille de l'espace de stockage actuellement alloué au vecteur.

    réserve()

    Demande que la capacité vectorielle soit au moins suffisante pour contenir un nombre spécifié d'éléments.

    rétrécir_to_fit()

    Réduit l'utilisation de la mémoire en libérant de l'espace inutilisé.

    get_allocator

    Renvoie une copie de l'objet allocateur associé au vecteur.

    Doit lire:

    • Comment vérifier si un vecteur contient un élément donné en C++ ?
    • Comment trouver l'index d'un élément donné dans un vecteur en C++
    • Trier un vecteur en C++