System.DynamicArray
C++
template<class T> class RTL_DELPHIRETURN DynamicArray
Sommaire
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | sysdyn.h | System | System |
Description
DynamicArray est l'analogue C++ du type de tableau dynamiqueDelphi.
Un tableau dynamique est une collection redimensionnable implémentée sous forme de tableau. Le modèle DynamicArray est l'implémentation C++ des types de tableau dynamique de Delphi. Le modèle DynamicArray utilise une disposition binaire compatible avec l'implémentation tableau dynamique de Delphi.
template <class T> class DELPHIRETURN DynamicArray;
Vous devez spécifier un paramètre de modèle :
Paramètre | Utilisation |
---|---|
type |
le type des éléments |
Longueur des tableaux dynamiques
La taille d'un tableau DynamicArray peut être définie ou obtenue à partir de la propriété Length :
//C++ example DynamicArray<int> arrayOfInt; arrayOfInt.Length = 10; cout << "ArrayLength: " << arrayOfInt.Length << endl;
Pour libérer un DynamicArray, assignez la valeur zéro à sa propriété Length.
Accès aux données
Accès aux éléments d'un tableau dynamique via l'opérateur subscript [] :
//C++ example void InitArray(DynamicArray<char> &c_array) { c_array[0] = 'A'; c_array[1] = 'B'; cout << "Third char is: " << c_array[2]; }
Limites des tableaux dynamiques
Les propriétés Low et High de DynamicArrays renvoient respectivement les limites inférieures et supérieures du tableau.
//C++ example int TotalArray(const DynamicArray<int>& arrayOfInt) { int total=0; for (int i=arrayOfInt.Low; i<=arrayOfInt.High; i++) total += arrayOfInt[i]; return total; }
Remarque : La propriété Low renvoie toujours 0. La propriété High renvoie Length-1. Vous pouvez aussi traverser un tableau dynamique via la construction suivante :
for (int i=0; i<arrayOfInt.Length; i++)
Assignation, comparaison et copie de tableaux dynamiques
Les tableaux dynamiques sont des comptes de référence. Lorsqu'un objet DynamicArray est assigné à un autre, seule la référence est assignée (et le nombre de références est ajusté), le contenu de la source n'est pas copié. De même, lorsque deux tableaux dynamiques sont comparés, seules les références sont comparées, non le contenu. Pour copier le contenu d'un objet DynamicArray, vous devez utiliser la méthode Copy (ou CopyRange).
//C++ example void foo(DynamicArray<int> &i_array) { DynamicArray<int> temp = i_array; assert(temp == i_array); // Temp and i_array point to same chunk // of data. i_array[0] = 20; assert(temp[0] == 20); // Temp 'sees' changes to i_array. temp = i_array.Copy(); // Temp gets its own copy of data. temp[0] = 10; assert(temp[0] != i_array[0]); // Above assignment did not // modify i_array. }
Tableaux dynamiques multidimensionnels
Les tableaux dynamiques peuvent être multidimensionnels. Il n'est pas nécessaire que les tableaux dynamiques soient rectangulaires. La propriété Length peut être utilisée pour définir chaque dimension. L'exemple suivant en est une illustration.
//C++ example typedef DynamicArray< DynamicArray < AnsiString > > T2DStringArray; void foo(T2DStringArray &s_array) { SetLength(s_array, 10); for (int i=0; i<s_array.Length; i++) { // Set lengths of second dimensions.(NOTE: non-rectangular) SetLength(s_array[i], i+1); for (int j=0; j<s_array[i].Length; j++) s_array[i][j] = itoa(i*10+j); } }