In diesem Fall wird der Konstruktor von std :: vector verwendet

7

Das sieht einfach aus, aber ich bin verwirrt: Die Art, wie ich einen Vektor von hundert, sagen wir, int s, ist

%Vor%

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

%Vor%

wo ich meinen eigenen Zuweiser, auch arbeiten?

    
recipriversexclusion 13.03.2010, 15:45
quelle

3 Antworten

14

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%     
Johannes Schaub - litb 13.03.2010, 16:01
quelle
6

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.

    
anon 13.03.2010 16:01
quelle
0

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).

    
pajton 13.03.2010 16:05
quelle

Tags und Links