std::array in C++11 verwenden

Seit C++11 gibt es den neuen Standardcontainer std::array. Wir sehen uns an, wie dieser verwendet werden kann. Im Gegensatz zu std::vector ist std::array kein dynamischer Datentyp. Seine Größe kann zur Laufzeit nicht verändert werden. Methoden wie push_back() oder pop_back() sind für diesen Container nicht implementiert.

Für die Ausführung unseres Beispiels ist es zunächst notwendig die entsprechenden Header einzubinden. Anschließend sehen wir uns die Initialisierung an. Wir legen ein neues Array vom Typ float an. Die Angabe zweier geschwungener Klammern nach dem Variablennamen führt dazu, dass alle Array Elemente mit null initialisiert werden. Zur Überprüfung geben wir die Elemente mit einer for Schleife aus.

Im nächsten Abschnitt initialisieren wir ein int – und ein double Array. Bei intArray wurde bewusst auf die manuell Initialisierung des letzten Elementes verzichtet. Dieses wird nun automatisch auf null gesetzt. Dazu später mehr.

Für die Ausgabe wird einmal die Funktion at() verwendet und einmal der Arrayoperator []. Der Arrayoperator ist effizienter im Zugriff, jedoch bietet at() einen Schutz vor einem Pufferüberlauf. Wird mit at() auf ein Element zugegriffen, das außerhalb des Arrays liegt, wird eine Exception ausgelöst.

Im letzten Abschnitt verändern wir die Werte von doubleArray innerhalb einer for Schleife Alle Elemente von doubleArray werden mit allen Werten von intArray addiert. Auch hier wird einmal die Funktion at() und einmal der Arrayoperator verwendet. In der Praxis ist es nicht unbedingt ratsam diese zu mischen, es ist jedoch prinzipiell möglich.

Bei der Ausgabe von doubleArray sehen wir, dass sich alle Werte bis auf den letzten verändert haben. Es ist erkennbar, dass bei der Erzeugung von intArray, das letzte Element wirklich mit null initialisiert wurde. Daher hat die Addition den Wert 5.5 nicht verändert.

Das Beispiel enthält C++11 spezifische Elemente. Wir compilieren mit folgendem Befehl:

g++ -std=c++11 cpp_std_array.cpp

Ausgabe nach Ausführung von ./a.out :

0 0 0 0 0
1.1 2.2
2.1 3.2 4.3 5.4 5.5

Das komplette Beispiel herunterladen: cpp_std_array.zip

Über Anton Neururer 31 Artikel
Ich bin Programmierer und Blogger. Themen die mich besonders interessieren sind Python, C++ und Javascript. Des Weiteren befasse ich mich mit Fraktalen.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen