2013-08-01 22 views
14

Sto cercando di creare un vettore vuoto all'interno di un ciclo e voglio aggiungere un elemento al vettore ogni volta che qualcosa viene letto in quel ciclo.come faccio ad aggiungere elementi a un vettore vuoto in un ciclo?

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    std::vector<float> myVector(); 

    float x; 
    while(cin >> x) 
     myVector.insert(x); 

    return 0; 
} 

ma questo mi sta dando messaggi di errore.

+0

Qual è il messaggio di errore? –

+6

Problema di parse più irritante. Sbarazzati delle parentesi nella dichiarazione di 'myVector'. – Joel

+0

sì, questo era il mio problema esatto. e ora capisco che devo usare push_back grazie! –

risposta

17

È necessario utilizzare std::vector::push_back() invece:

while(cin >> x) 
    myVector.push_back(x); 
//   ^^^^^^^^^ 

e non std::vector::insert(), che, come si può vedere nel link, ha bisogno di un iteratore per indicare la posizione in cui si desidera inserire l'elemento.

Inoltre, come what @Joel has commented, è necessario rimuovere le parentesi nella definizione della variabile vettoriale.

std::vector<float> myVector; 

e non

std::vector<float> myVector(); 

Facendo quest'ultimo, si esegue in Most Vexing Parse problema C++ 's.

2

Uso push_back:

while(cin >> x) 
    myVector.push_back(x); 

La funzione insert prende un iteratore come primo argomento, che indica la posizione di inserimento.

Inoltre, è necessario sbarazzarsi delle parentesi nella dichiarazione di myVector:

std::vector<float> myVector; 
+0

Il problema è che continuo a ricevere il seguente messaggio di errore ogni volta che decido di utilizzare un metodo: "richiesta per 'push_back' in myVector che è di tipo non di classe std ::" –

+0

@AmberRoxanna Usa 'std :: vector myVector ; 'invece di' std :: vector myVector(); ' – Yang

0

Se si desidera utilizzare myVector.insert(), utilizzare come myVector.insert(myVector.end(), x). Questo aggiungerà x alla fine di myVector. È possibile inserire x all'inizio con myVector.insert(myVector.begin(), x).

Problemi correlati