J'essaie de créer un vecteur vide à l'intérieur d'une boucle et souhaite ajouter un élément au vecteur chaque fois que quelque chose est lu dans cette 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 cela me donne des messages d'erreur.
Si vous voulez utiliser myVector.insert()
, Utilisez-le comme myVector.insert(myVector.end(), x)
. Ceci ajoutera x à la fin de myVector . Vous pouvez insérer x au début par myVector.insert(myVector.begin(), x)
.
Une autre option consiste à utiliser std::vector::emplace_back()
au lieu de std::vector::Push_back()
. Le fait quelques optimisations et ne prend pas un argument de type vector::value_type
, il prend des arguments variés qui sont transmis au constructeur de l'élément ajouté, alors que Push_back
peut effectuer des copies ou des mouvements inutiles.
Ceci est démontré dans la documentation std :: vector :: emplace_back et ici est une question connexe.
Exemple d'utilisation:
std::vector<int> myVector;
while (cin >> x) {
myVector.emplace_back(x);
}