In primo luogo, myVector
verrà inizializzato, anche se non fate niente, dal momento che ha costruttori non banali. Se si desidera inizializzare dato un puntatore a una sequenza di int
, sarà necessario conoscere la lunghezza anche per . Se si dispone di un puntatore e la lunghezza, si può fare:
: myVector(pInitialValues, pInitialValues + length)
In alternativa (e più idiomaticamente), si lascia che il chiamante fare l'aggiunta, e hanno il costruttore prendere due puntatori, un inizio e fine: (. Se il chiamante è usando C++ 11, si possono ottenere questi da una matrice stile C usando std::begin()
e std::end()
)
: myVector(pBegin, pEnd)
EDIT:
solo per rendere perfettamente chiaro: solo un int*
non fornisce informazioni sufficienti per fare qualsiasi cosa. Un int*
punta al primo elemento di una matrice di stili C; è anche necessario un modo per trovare alla fine: un conteggio di elementi, un puntatore finale, ecc. Nei casi speciali , è possibile utilizzare altre tecniche; Ad esempio, se l'array di stile C contiene solo numeri non negativi, è possibile utilizzare come sentinella, e . Questi sono casi speciali, comunque.
fonte
2013-02-27 08:50:43
In che modo si desidera inizializzare 'std :: vector'? (Quale forma specifica dei suoi costruttori vuoi usare?) –
Dipende. Cosa intendi con "inizializzare"? Contro quale versione di standard C++ stai lavorando? – Johnsyweb
@Mark Garcia con int * p_Vector – CLearner