Das sieht einfach aus, aber ich bin verwirrt: Die Art, wie ich einen Vektor von hundert, sagen wir, int
s, ist
Wenn ich jedoch auf die Dokumentation von std :: vector schaue, sehe ich, dass ihr Konstruktor der Formular
%Vor% Also, wie funktioniert der vorherige? Ruft new
den Konstruktor mit einem Initialisierungswert auf, der vom Standardkonstruktor erhalten wird? Wenn das der Fall ist, würde
wo ich meinen eigenen Zuweiser, auch arbeiten?
Sie machen alles falsch. Erstellen Sie es einfach als automatisches Objekt, wenn Sie nur einen Vektor im aktuellen Bereich und in der aktuellen Zeit benötigen.
%Vor%Der Konstruktor hat Standardargumente für den zweiten und dritten Parameter. So ist es mit nur einem int aufrufbar. Wenn Sie einen eigenen Allokator übergeben möchten, müssen Sie ein zweites Argument übergeben, da Sie ihn nicht einfach überspringen können.
%Vor%Ein dediziertes Beispiel könnte die Angelegenheit klären
%Vor%Um (vielleicht) klarzustellen:
Um ein Vektorobjekt namens v mit 100 Elementen zu erstellen:
%Vor%Dies verwendet den Vektorkonstruktor, der die Größe (100) als ersten Parameter verwendet. So erstellen Sie einen dynamisch zugewiesenen Vektor mit 100 Elementen:
%Vor%verwendet genau den gleichen Konstruktor.
Sie erstellen ein vector
von hundert Elementen. Wie Sie im zweiten Codebeispiel sehen, das Sie gepostet haben:
expliziter Vektor (size_type n, const T & amp; value = T (), const Zuweisung & amp; = Zuweiser ());
Dieser Konstruktor nimmt die Anzahl der Elemente, die in vector
und eine value
eingefügt werden sollen, die in Vektor n
mal eingefügt werden. Wenn Sie kein value
angeben, wird ein value
mit dem Standardkonstruktor Ihres Vektortyps T
erstellt. Hier wäre es der "Standard" -Konstruktor von int
, der ihn auf 0 initialisiert (es gibt keinen Standardkonstruktor von int
, jedoch sagt der C ++ - Standard, dass int
in solchen Fällen auf 0 initialisiert wird).