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)
[править] Смотрите также
| (ТС параллелизма v2) |
тип вектора параллельных данных (шаблон класса) |