Udostępnij za pośrednictwem


Tablice (C++)

Tablica jest to zbiór jak obiekty.Najprostszy przypadek tablicy jest wektor, które mogą być zgłaszane przez następującą sekwencję:

decl-specifier identifier [ constant-expression ]
decl-specifier identifier []
decl-specifier identifer [][ constant-expression] . . .
decl-specifier identifier [ constant-expression ]
[ constant-expression ] . . .

1.Specyfikator deklaracji:

  • Specyfikator klasy magazynowania opcjonalne.

  • Opcjonalny const i/lub volatile Specyfikatory.

  • Nazwa Typ elementów tablicy.

2.Niewłaściwy deklarator:

  • Identyfikator.

  • Wyrażenie stałe integralną typu w nawiasach, []. Jeśli wiele wymiarów zadeklarowane za pomocą dodatkowe nawiasy, wyrażenie stałe mogą być pominięte na pierwszy zestaw nawiasów.

  • Opcjonalne dodatkowe nawiasy zakrywające wyrażenia stałe.

3.Opcjonalne inicjatora.Zobacz inicjatory.

Liczba elementów w tablicy jest podana przez wyrażenie stałe.Pierwszy element w tablicy jest elementem płatnooci i jest ostatnim elementem (n-1) elementu, gdy n jest liczba elementów tablicy może zawierać.Wyrażenie stała musi być typem całkowitym i musi być większa niż 0.Tablica o rozmiarze zero jest legalne, tylko wtedy, gdy tablica jest ostatnie pole w struct lub Unii i gdy włączone są rozszerzenia Microsoft (/Ze).

Poniższy przykład przedstawia sposób definiowania tablicy w czasie wykonywania:

// arrays.cpp
// compile with: /EHsc
#include <iostream>

int main() {
   using namespace std;
   int size = 3, i = 0;

   int* myarr = new int[size];

   for (i = 0 ; i < size ; i++)
      myarr[i] = 10;

   for (i = 0 ; i < size ; i++)
      printf_s("myarr[%d] = %d\n", i, myarr[i]);

   delete [] myarr;
}

Tablice są typy pochodne i dlatego mogą być skonstruowane żadnego innego typu pochodnego lub podstawowych z wyjątkiem funkcji, odwołań, i void.

Skonstruowane z innych tablice tablic są tablice wielowymiarowe.Te tablice wielowymiarowe są określone przez umieszczenie wielu stałych wyrażeń w nawiasach kwadratowych w sekwencji.Na przykład należy wziąć pod uwagę tę deklarację:

int i2[5][7];

Określa tablicę typu int, jest koncepcyjnie ułożone w dwuwymiarową macierz pięć wierszy i kolumn siedmiu, jak pokazano na poniższym rysunku:

Rozplanowania koncepcyjnego tablicy wielowymiarowej

Koncepcyjny układ tablicy wielowymiarowej

W deklaracji tablic multidimensioned, które mają listę inicjator (jak opisano w inicjatorów), można pominąć wyrażenie stałe, która określa granice dla pierwszego wymiaru.Na przykład:

// arrays2.cpp
// compile with: /c
const int cMarkets = 4;
// Declare a float that represents the transportation costs.
double TransportCosts[][cMarkets] = { 
   { 32.19, 47.29, 31.99, 19.11 },
   { 11.29, 22.49, 33.47, 17.29 },
   { 41.97, 22.09,  9.76, 22.55 }
};

Deklaracja poprzedniego określa tablicę, która jest trzy wiersze według czterech kolumn.Wiersze reprezentują fabryk a kolumny rynki, do których statek fabryk.Wartości są koszty transportu z fabryki do rynków.Pierwszy wymiar tablicy jest opuszczony, ale kompilator wypełnia ona poprzez zbadanie inicjatora.

Tematy w tej sekcji:

Przykład

Technika z pominięciem specyfikacji granice dla pierwszego wymiaru Tablica wielowymiarowa można również w deklaracji funkcji w następujący sposób:

// multidimensional_arrays.cpp
// compile with: /EHsc
// arguments: 3
#include <limits>   // Includes DBL_MAX
#include <iostream>

const int cMkts = 4, cFacts = 2;

// Declare a float that represents the transportation costs
double TransportCosts[][cMkts] = { 
   { 32.19, 47.29, 31.99, 19.11 },
   { 11.29, 22.49, 33.47, 17.29 },
   { 41.97, 22.09,  9.76, 22.55 }  
};

// Calculate size of unspecified dimension
const int cFactories = sizeof TransportCosts /
                  sizeof( double[cMkts] );

double FindMinToMkt( int Mkt, double myTransportCosts[][cMkts], int mycFacts);

using namespace std;

int main( int argc, char *argv[] ) {
   double MinCost;

   if (argv[1] == 0) {
      cout << "You must specify the number of markets." << endl;
      exit(0);
   }
   MinCost = FindMinToMkt( *argv[1] - '0', TransportCosts, cFacts);
   cout << "The minimum cost to Market " << argv[1] << " is: "
       << MinCost << "\n";
}

double FindMinToMkt(int Mkt, double myTransportCosts[][cMkts], int mycFacts) {
   double MinCost = DBL_MAX;

   for( int i = 0; i < cFacts; ++i )
      MinCost = (MinCost < TransportCosts[i][Mkt]) ?
         MinCost : TransportCosts[i][Mkt];

   return MinCost;
}
  

Komentarze

Funkcja FindMinToMkt jest napisane, takie, że dodanie nowych zakładów produkcyjnych nie wymaga żadnych zmian kodu, po prostu ponowną kompilację.

Zobacz też

Informacje

Declarators streszczenie C++