comment puis-je ajouter des éléments à un vecteur vide dans une boucle?
Je suis en train de créer un vecteur vide à l'intérieur d'une boucle et vous souhaitez ajouter un élément du vecteur à chaque fois que quelque chose est lu en boucle.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<float> myVector();
float x;
while(cin >> x)
myVector.insert(x);
return 0;
}
mais ce qui me donne des messages d'erreur.
Quel est le message d'erreur?
Plus délicate à analyser le problème. Se débarrasser des parenthèses dans la déclaration de
oui, c'était mon problème exact. et maintenant, je comprends que j'ai besoin d'utiliser push_back merci!
Plus délicate à analyser le problème. Se débarrasser des parenthèses dans la déclaration de
myVector
.oui, c'était mon problème exact. et maintenant, je comprends que j'ai besoin d'utiliser push_back merci!
OriginalL'auteur Amber Roxanna | 2013-08-01
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
std::vector::push_back()
à la place:et pas
std::vector::insert()
, qui, comme vous pouvez le voir dans le lien, a besoin d'un itérateur pour indiquer la position où vous souhaitez insérer l'élément.Aussi, comme ce que @Joel a commenté, vous devez supprimer les parenthèses dans votre vecteur de la variable de définition.
et pas
En faisant de ce dernier, vous exécutez en C++ Plus Délicate À Analyser problème.
OriginalL'auteur Mark Garcia
Utilisation
push_back
:La
insert
fonction prend un itérateur comme premier argument, indiquant la position d'insertion.Aussi, vous avez besoin de se débarrasser des parenthèses dans la déclaration de
myVector
:Utilisation
std::vector<float> myVector;
au lieu destd::vector<float> myVector();
OriginalL'auteur Yang
Si vous souhaitez utiliser
myVector.insert()
,l'utiliser comme
myVector.insert(myVector.end(), x)
. Cela ajoute x à la fin de myVector.Vous pouvez insérer x au début par
myVector.insert(myVector.begin(), x)
.OriginalL'auteur Nikunj
Une autre option est d'utiliser
std::vector::emplace_back()
au lieu destd::vector::push_back()
. Le fait de quelques optimisations et ne prend pas un argument de typevector::value_type
, il faut variadic arguments qui sont transmis au constructeur de l'élément ajouté, tout enpush_back
pouvez faire des copies inutiles ou des mouvements.Ce qui est démontré dans le std::vector::emplace_back documentation et ici est une question connexe.
Exemple d'utilisation:
OriginalL'auteur J-Alex