Программирование >>  Операторы преобразования типа 

1 ... 173 174 175 [ 176 ] 177 178 179 ... 239


valarray<slze t> 1dx(4; 1dx[0] = 8, 1dx[l] = 0 idx[2] = 3 1dx[3] = 7

Вывод девятого, первого, четвертого и восьмого элементов с использованием перечисляемого подмножества рг1 ntValarray(valarray<double>(va[1dx]). 4);

Изменение первого и четвертого элементов и повторный вывод перечисляемого подмножества va[0] = 11,11; va[3] = 44.44;

printValarray(valarray<double>(va[idx]), 4):

Выбор второго, третьего, шестого и девятого элементов и присваивание им 99 idx[Q] = 1 idx[l] = 2: idx[2] = 5: idx[3] -vaLidx] = 99;

Вывод всего массива значений printValarray (va. 4):

Переменная idx используется для определения подмножеств элементов массива значений va. Результат выполнения программы выглядит так:

1.01 2.02 3.03 4.04 5.05 6.06 7.07 8.08 9.09 10.1 11.11 12.12

9.09 1,01 4.04 8.08

9.09 11.11 44.44 8.08

11.11 99 99 44,44 5.05 99 7.07 8.08 99 10.1 11.11 12.12

Строение класса valarray

в поддержке массивов значений центральное место занимает класс valarrayo. Он определяется кйк шаблонный класс, параметризованный по типу элементов:

namespace std{

template <class Т> class valarray;



Размер не является частью типа. Это означает, что теоретически вы можете обрабатывать массивы значений разных размеров и изменять размеры. Тем не менее изменение размера поддерживается только для двухшаговой инициализации (создание и изменение размера), неизбежной при работе с массивами значений. Учтите, что результат объединения массивов разных размеров не определен.

Операции создания, копирования и удаления

vdldrrdy: :valarray {)

О Конструктор по умолчанию.

О Создает пустой массив значений.

О Конструктор определен только для создания массивов, элементами которых являются массивы значений. Следующим шагом должно быть назначение правильного размера функцией resize().

expHtit Vdldrrdy: .\iaarray {s1ze t пит)

О Создает массив значений, содержащий пит элементов.

О Элементы инициализируются конструктором по умолчанию (О для базовых типов данных).

valдггау: :\/а]array (const Т& value. size t пит)

О Создает массив значений, содержащий пит элементов. О Элементы инициализируются значением value.

О Обратите внимание на нестандартный порядок следования параметров. В интерфейсе остальных классов стандартной библиотеки С++ параметр пит идет первым, а параметр value ~ вторым.

i/d/array:; val array (const T* array, s1ze t num)

О Создает массив значений, содержащий пит элементов.

О Элементы инициализируются значениями элементов массива airay.

О Перед вызовом необходимо убедиться в том, что массив array содержит не менее пит элемстггов; в противном случае вызов приводит к непредсказуемым последствиям,

vd/drray:: val array (const valarrayb. va)

О Копирующий конструктор.

о Создает массив значений как копию va.

valarray: [-jа]array О

О Деструктор.

О Уничтожает все элементы и освобождает память.

Вдобавок массивы значений могут создаваться объектами внутренних вспомогательных классов slice array, gslice array, mask array и indirect array. За подробностями обращайтесь соответственно на с. 551, 553, 554 и 555.



В предыдущих версиях STL эта операция выполнялась функцией ЙП(). В предыдущих версиях STL функция size() называлась length().

Операции присваивания

valarray va/array::operator= (const valarray va) О Присваивает элементы массива значений va.

О Если массив va имеет другой размер, присваивание приводит к непредсказуемым последствиям.

О Значение элемента в левой части любой операции присваивания массиву значений не должно зависеть от значений других элементов, находящихся в левой части. Другими словами, если операция присваивания перезаписывает значения, используемые в правой части операции присваивания, это приводит к непредсказуемым последствиям. Следовательно, элементы из левой части вообще не могут указываться в выражении, находящемся в правой части. Это ограничение объясняется тем, что порядок вычисления результата при обработке массивов значений не определен. Дополнительная информация приведена на с. 532 и 536.

valarray valarray: .operator= (const Т& value)

О Присваивает value каждому элементу массива значений

О Размер массива значений не изменяется, указатели и ссылки на элементы остаются действительными.

Вдобавок допускается присваивание значений внутренних вспомогательных классов slice array, gslice array, mask array и indirect array. За подробностями обращайтесь соответственно на с. 551, 553, 554 и 555.

Функции класса

Класс valarray определяет следующие функции.

s1ze t valarray: :size () const

Возвращает текущее количество элементов.

void ia/array::resize (s1ze t пит)

void /array::resize (sizet num, T value)

О Обе формы изменяют размер массива значений до величины пит.

О При увеличении размера новые элементы инициализируются конструктором по умолчанию или значением value соответственно.

О Обе формы делают недействительными все указатели и ссылки на элементы массива значений.

О Функции поддерживаются только для создания массивов, элементами которых являются массивы значений. После создания массива значений конструктором по умолчанию следует задать его правильный размер вызовом resizeO.



1 ... 173 174 175 [ 176 ] 177 178 179 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика