Also die dynamischen Arrays sollte man ganz vergessen und dafür std::vector anwenden.
Genau. Wenn es reine Benutzung in alltäglichem Code ist, dann ja.
std::array ist im Grunde das gleiche wie std::vector einfach anders aufgebaut und mit ein paar veränderten bzw. hinzugefügten oder auch fehlenden Funktionen.
Nicht ganz. Ein std::array ist eher etwas wie ein normales (nicht-dynamisches) array. Es bietet aber eben STL-Kompatibilität, Kopierbarkeit etc. an.
Zur Laufzeit ist die Benutzung eines std::array äquivalent zu einem normalen array. Der Unterschied ist, dass der Programmierer weniger denken und aufpassen muss. Ein std::vector hat einen minimalen Mehraufwand bei dem Zugriff auf ein Element. Das ist jetzt nichts, was auf den Entscheid zwischen std::array und std::vector einen Unterschied machen sollte, aber fürs Verständnis kann das wichtig zu wissen sein.
Innen drin ist ein std::array in etwa das hier:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
template<class T, int n>
class myArray
{
public:
... // nützliche Funktionen
private:
T[n] m_Data; // statisches array
};
|
ein std::vector das hier:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
template<class T>
class myVector
{
public:
... // nützliche Funktionen
private:
T* m_Data; // dynamisches array
};
|
Ich hoffe der Unterschied ist jetzt klar, sonst einfach nochmal nachhaken!