2012-05-11 18 views
31

In C++ è possibile creare una matrice di dimensioni predefinite, ad esempio 20, con int myarray[20]. Tuttavia, the online documentation on vectors non mostra un modo simile di inizializzare i vettori: Invece, un vettore deve essere inizializzato con, ad esempio, std::vector<int> myvector (4, 100);. Questo dà un vettore di dimensione 4 con tutti gli elementi il ​​valore 100.Come creare un vettore di dimensioni definite dall'utente ma senza valori predefiniti?

Come può essere inizializzato un vettore con solo una dimensione predefinita e nessun valore predefinito, come con gli array?

+0

leggere la documentazione? http://www.cplusplus.com/reference/stl/vector/vector/ http://www.cplusplus.com/reference/stl/vector/resize/ –

+0

@JesseGood - Mi sono collegato ad entrambi in edit, fat fingered it la prima volta;) –

+2

@BrianRoach: anche tu potresti voler leggere [Cosa c'è di sbagliato in cplusplus.com?](http://programmers.stackexchange.com/questions/88241/whats-wrong-with-cplusplus-com). –

risposta

39

con il costruttore:

// create a vector with 20 integer elements 
std::vector<int> arr(20); 

for(int x = 0; x < 20; ++x) 
    arr[x] = x; 
+0

Spiacente, non funziona per me, OS X Mavericks LLVM, predefinito per xcode 4.2+. Che compilatore stai usando? – patrik

+0

Niente di magico riguardo ai compilatori che ho usato. Questo è tutto un comportamento definito dallo standard. Se questo codice esatto non funziona, sospetta le estensioni del compilatore o dello xcode che lo infrangono. – Chad

+1

Ok, vedo, penso che LLVM usi clang per C++, quindi è strano. Ho pensato che il vettore dovrebbe essere visto più o meno come una sostituzione di matrice in questi giorni e che dovrebbe riflettersi nella sintassi (che dovrebbe essere ciò che è scritto da te allora). Strano che il mio compilatore non lo permetta. Tuttavia, il punto di questo commento è di aggiungere un'estensione a ciò che è già stato scritto; Quindi, 'std :: vector arr = std :: vector (20);' ha funzionato bene per me, specificando in particolare che voglio utilizzare il costruttore per il vettore. – patrik

Problemi correlati