На этом шаге мы рассмотрим способы создания массивов значений.
При создании массива значений количество элементов обычно передается в параметре конструктора:
std::valarray<int> val(10); // Массив из десяти нулевых элементов int std::valarray<f1oat> val2(5.7,10); // Массив из десяти элементов float, // равных 5.7 (обратите внимание на порядок!)
Если конструктор вызывается с одним аргументом, передаваемое значение интерпретируется как размер массива. Элементы инициализируются конструктором по умолчанию для типа элемента; базовые типы инициализируются нулями (инициализация базовых типов конструктором по умолчанию рассматривается на 34 шаге). Если при вызове конструктора передаются два аргумента, то первый определяет начальное значение, а второй - количество элементов. Такой порядок передачи двух аргументов конструктору отличается от остальных классов стандартной библиотеки C++. Во всех контейнерах STL первый числовой аргумент определяет количество элементов, а второй - их исходное значение.
Массив значений также можно инициализировать обычным массивом:
int агтау[] = { 3, 6, 18, 3, 22 }; // Инициализация массива значений элементами обычного массива: std::valarray<int> va3(array,sizeof(array)/sizeof(array[0])); // Инициализация элементами массива со второго по четвертый std::valarray<int> va4(array+1,3);
Массив значений создает копии передаваемых данных, поэтому для инициализации могут использоваться временные данные.
На следующем шаге мы рассмотрим операции с массивами значений.