Zuerst myVector
wird initialisiert, auch wenn Sie nichts tun, da es nicht-triviale Konstrukteure. Wenn Sie initialisieren möchten, geben Sie einen Zeiger auf eine Sequenz von int
, Sie müssen auch die Länge kennen. Wenn Sie sowohl einen Zeiger und die Länge haben, können Sie tun:
: myVector(pInitialValues, pInitialValues + length)
Alternativ (und mehr idiomatisch), werden Sie die Anrufer lassen tun die Zugabe, und haben den Konstruktor zwei Zeiger nehmen, eine Anfang und ein Ende: (. Wenn der Anrufer unter Verwendung von 11 C++ ist, er diese von einem C Stil Array std::begin()
und std::end()
erhalten kann)
: myVector(pBegin, pEnd)
EDIT:
Nur um es klar zu machen: nur int*
liefert keine Informationen genug, um etwas zu tun. Ein int*
verweist auf das erste Element eines C-artigen Arrays ; Sie müssen auch einen Weg von finden das Ende: eine Element-Zählung, ein Ende-Zeiger, etc. In Sonderfälle können andere Techniken verwendet werden; Wenn das C-Format Array nur nicht negative Zahlen enthält, können Sie -1
als ein Sentinal und etwas wie : myVector(pVector, std::find( pVector, NULL, -1))
verwenden. Dies sind jedoch Sonderfälle.
I wie möchten Sie Ihren 'std :: vector' initialisieren? (Welche spezielle Form seiner Konstruktoren möchten Sie verwenden?) –
Es kommt darauf an. Was meinst du mit "initialisieren"? Gegen welche Version des C++ Standards arbeiten Sie? – Johnsyweb
@Mark Garcia mit int * p_Vector – CLearner