web-dev-qa-db-fra.com

Comment puis-je insérer un élément au début du vecteur?

je suis novice dans l'écriture de code et j'ai besoin d'un peu d'aide. J'ai besoin d'insérer des valeurs au début d'un std::vector et j'ai besoin que d'autres valeurs de ce vecteur soient poussées vers d'autres positions, par exemple: quelque chose ajouté au début d'un vecteur et des valeurs déplacées de la position 1 à 2, de 2 à 3 etc. comment faire?

11
Paweł Szymkowicz

Utilisez std :: vector :: insert fonction acceptant itérateur vers le premier élément comme position cible (itérateur avant lequel insérer l'élément):

#include <vector>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5 };
    v.insert(v.begin(), 6);
}

Edit : Comme indiqué dans les commentaires, vous pouvez également ajouter l'élément et effectuer rotation = à droite:

#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5 };
    v.Push_back(6);
    std::rotate(v.rbegin(), v.rbegin() + 1, v.rend());
}
23
Ron

Vous devriez envisager d'utiliser std::deque. Il fonctionne beaucoup comme un std::vector Mais vous pouvez ajouter et supprimer des éléments à l'avant et à la fin.

Pour ce faire, il divise le stockage interne en blocs plus petits. Vous avez toujours des itérateurs à accès aléatoire avec une bonne vitesse de recherche.

Si votre conteneur est petit, il devrait être judicieux d'utiliser l'approche std::vector Mais si vous stockez de grandes quantités de données, les performances de std::deque Pour l'insertion/la suppression à l'avant seront bien supérieures.

5
super