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?
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());
}
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.