Массивы (C++)
массив коллекция близких объектов.Самый простой случай массива вектор, который может быть объявлен следующей последовательности:
decl-specifier identifier [ constant-expression ]
decl-specifier identifier []
decl-specifier identifer [][ constant-expression] . . .
decl-specifier identifier [ constant-expression ]
[ constant-expression ] . . .
1.описатель объявления:
Необязательный описатель класса хранения.
Необязательно Const и/или volatile описатели.
имя типа элементов массива.
2.декларатор:
Идентификатор.
Константное выражение целого типа, заключенное в брекеты []. Если несколько измерений объявляются с помощью дополнительных брекеты, константное выражение может быть пропущено в первом наборе брекетов.
Необязательные дополнительные брекеты включающего константные выражения.
3.Необязательный инициализатор.См. Инициализаторы.
Число элементов в массиве задано константным.Первый элемент массива 0th, а последний элемент (элементn-1) элемент where n количество элементов массива может содержать.константное выражение для объединенного типа и быть больше 0.Массив нулевого размера допустим только в том случае, если массив последнего поля в a struct OR union когда и расширения Майкрософт (/Ze).
В следующем примере показано, как задать массив во время выполнения.
// 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;
}
Массивы производные типы и поэтому могут быть построены из любого другого базового или производного типа, отличного от функций, ссылок и void.
Массивы массивов, построенные из других многомерные массивы.Эти многомерные массивы определяются установкой отысканные вилку кратным константные выражения в последовательности.Например, рассмотрим это объявление:
int i2[5][7];
Оно задает массив типа intпо существу, располагаются в плоской матрице 5 строк и 7 столбцов, как показано на следующем рисунке:
Концептуальная структура многомерного массива
В объявлениях multidimensioned массивов, имеющих список инициализации (как описано в разделе Инициализаторы), константное выражение, которое определяет границы для первого измерения можно опустить.Примеры.
// 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 }
};
Предыдущее объявление задает массив строк, 3 4 столбцами.Строки представляют фабрики и столбцы представляют рынки, к которым корабль фабрик.Значения стоимость передачи из фабрик к рынках.Первое измерение массива слева out, но компилятор заполняет его внутри с инициализатор.
Подразделы в этом разделе:
Пример
Метод пропуск спецификацию границ для первого измерения многомерного массива можно также использовать в объявлениях функций следующим образом:
// 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;
}
Комментарии
функция FindMinToMkt записывает таким образом, чтобы добавить новые фабрики не требует никаких изменений Кода просто повторная компиляция.