So schreibe mir eine Klasse, die 1d-Arrays und 2d-Arrays hat, dass ich in dem Konstruktor dynamisch zuteilenVerwenden Sie std :: vector für dynamisch zugewiesene 2d-Array?
class Foo{
int** 2darray;
int * 1darray;
};
Foo::Foo(num1, num2){
2darray = new int*[num1];
for(int i = 0; i < num1; i++)
{
array[i] = new int[num2];
}
1darray = new int[num1];
}
Dann werde ich jedes 1d-Array und jedes Array in dem 2D-Array löschen muß im Destruktor, richtig? Ich möchte Std :: Vector dafür nicht tun. Gibt es einen Nachteil, dies zu tun? (macht die Kompilierung langsamer etc?)
TL; DR: wann std :: vector für dynamisch zugewiesene Arrays, die während der Laufzeit NICHT angepasst werden müssen?
IMHO * dynamisch zugewiesenen Arrays * gleich 'std :: VECTOR'.Ich versuche, so weit wie möglich von manuellen Speicherzuweisungen fernzubleiben. – NathanOliver
Verwenden Sie immer 'std :: vector', es sei denn, Sie wissen zum Zeitpunkt der Kompilierung wirklich, wie groß Ihr Array sein wird. Selbst dann möchten Sie vielleicht einen Standardcontainer verwenden (sagen wir ein Bitset, wenn Sie eine Sammlung von Flags haben wollen). Für die meisten Anwendungsfälle entspricht ein 'std :: vector', der während der Laufzeit nicht die Größe ändert, einem 'Type []'. –
BTW, verwende keinen Vektor von Vektoren, verwende auch 1D Vektor für den 2D Fall. – Ped7g