Bei der Initialisierung von std :: array [duplicate]

8

Nehmen wir an, Sie haben einen c ++ 0x std :: array Member einer Template-Klasse und möchten ihn mit einem Konstruktor initialisieren, der ein paar Iteratoren benötigt:

%Vor%

Wenn Sie annehmen, dass Sie einen Bereich bereitstellen, der mit der Größe Ihres Speichers übereinstimmt, ist es möglich, das std :: -Array im Konstruktorinitialisierer zu initialisieren und die überflüssigen Standardkonstruktoren von Tps im Speicher zu vermeiden? Ist es möglich, die std :: initializer_list & lt; & gt; in diesem Fall?

    
Nicola Bonelli 22.07.2010, 17:07
quelle

1 Antwort

3

Nein.

std::array ist ein Aggregat, daher erhalten Sie keine spezielle Funktionalität wie Konstruktoren, die Iteratoren verwenden. (Das überrascht mich wirklich, mit der Einführung von std::initializer_list sehe ich keinen Schaden bei der Herstellung anderer nützlicher Konstruktoren. Vielleicht steht eine Frage bevor.)

Dies bedeutet, dass die einzige Möglichkeit, Iteratoren zum Kopieren von Daten innerhalb des Arrays zu verwenden, die Iteration ist. Dazu muss array bereits konstruiert und einsatzbereit sein.

    
GManNickG 22.07.2010, 17:50
quelle

Tags und Links