std::valarray
Определено в заголовочном файле <valarray>
|
||
template< class T > class valarray; |
||
std::valarray
это класс для представления массивов значений и управления ими. Он поддерживает поэлементные математические операции и различные формы обобщённых индексирующих операторов, нарезки и косвенный доступ.
Содержание |
[править] Примечание
std::valarray
и вспомогательные классы определены как свободные от определенных форм псевдонимов, что позволяет оптимизировать операции над этими классами аналогично эффекту ключевого слова restrict в языке программирования C. Кроме того, функциям и операторам, которые принимают аргументы valarray
, разрешено возвращать прокси-объекты, чтобы компилятор мог оптимизировать такие выражения, как v1 = a*v2 + v3; как единый цикл, который выполняет v1[i] = a*v2[i] + v3[i];, избегая каких-либо временных или множественных проходов. Однако, шаблоны выражений делают ту же технику оптимизации доступной для любого контейнера C++, и большинство числовых библиотек предпочитают шаблоны выражений массивов значений для гибкости. Некоторые реализации стандартной библиотеки C++ используют шаблоны выражений для реализации эффективных операций над std::valarray
(например, GNU libstdc++ и LLVM libc++). Только изредка массивы значений оптимизируются дальше, как, например, в Интегрированные Примитивы Производительности Intel.
[править] Параметры шаблона
T | — | тип элементов. Тип должен соответствовать требованиям NumericType |
[править] Типы элементы
Тип элемент | Определение |
value_type
|
T
|
[править] Функции-элементы
создаёт новый числовой массив (public функция-элемент) | |
разрушает числовой массив (public функция-элемент) | |
присваивает содержимое (public функция-элемент) | |
получает/устанавливает элемент valarray, срез или маску (public функция-элемент) | |
применяют унарные арифметические операции к каждому элементу valarray (public функция-элемент) | |
применяют составной оператор присваивания к каждому элементу valarray (public функция-элемент) | |
обменивается с другим valarray (public функция-элемент) | |
возвращает размер valarray (public функция-элемент) | |
изменяет размер valarray (public функция-элемент) | |
вычисляет сумму всех элементов (public функция-элемент) | |
возвращает наименьший элемент (public функция-элемент) | |
возвращает наибольший элемент (public функция-элемент) | |
сдвигает элементы valarray с нулевым заполнением (public функция-элемент) | |
циклический сдвиг элементов valarray (public функция-элемент) | |
применяет функцию к каждому элементу valarray (public функция-элемент) |
[править] Функции, не являющиеся элементами
(C++11) |
специализация алгоритма std::swap (шаблон функции) |
(C++11) |
перегружает std::begin (шаблон функции) |
(C++11) |
специализация std::end (шаблон функции) |
применяют бинарные операторы к каждому элементу двух valarray или valarray и значению (шаблон функции) | |
сравнивает два valarray или valarray со значением (шаблон функции) | |
применяет функцию abs к каждому элементу valarray (шаблон функции) | |
Экспоненциальные функции | |
применяет функцию std::exp к каждому элементу valarray (шаблон функции) | |
применяет функцию std::log к каждому элементу valarray (шаблон функции) | |
применяет функцию std::log10 к каждому элементу valarray (шаблон функции) | |
Степенные функции | |
применяет функцию std::pow к двум valarray или valarray и значению (шаблон функции) | |
применяет функцию std::sqrt к каждому элементу valarray (шаблон функции) | |
Тригонометрические функции | |
применяет функцию std::sin к каждому элементу valarray (шаблон функции) | |
применяет функцию std::cos к каждому элементу valarray (шаблон функции) | |
применяет функцию std::tan к каждому элементу valarray (шаблон функции) | |
применяет функцию std::asin к каждому элементу valarray (шаблон функции) | |
применяет функци�� std::acos к каждому элементу valarray (шаблон функции) | |
применяет функцию std::atan к каждому элементу valarray (шаблон функции) | |
применяет функцию std::atan2 к valarray и значению (шаблон функции) | |
Гиперболические функции | |
применяет функцию std::sinh к каждому элементу valarray (шаблон функции) | |
применяет функцию std::cosh к каждому элементу valarray (шаблон функции) | |
применяет функцию std::tanh к каждому элементу valarray (шаблон функции) |
[править] Вспомогательные классы
BLAS-подобный фрагмент valarray: начальный индекс, длина, шаг (класс) | |
прокси для подмножества valarray после применения slice (шаблон класса) | |
обобщенный фрагмент valarray: начальный индекс, набор длин, набор шагов (класс) | |
прокси для подмножества valarray после применения gslice (шаблон класса) | |
прокси для подмножества valarray после применения логической маски operator[] (шаблон класса) | |
прокси для подмножества valarray после применения косвенного operator[] (шаблон класса) |
[править] Принципы вывода (начиная с C++17)
[править] Смотрите также
Шаблон:cpp/experimental/simd/dsc simd mask (ТС параллелизма v2) |
тип вектора параллельных данных (шаблон класса) |