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++, и большинство числовых библиотек предпочитают шаблоны выражений valarrays для большей гибкости. Некоторые реализации стандартной библиотеки C++ используют шаблоны выражений для реализации эффективных операций над std::valarray (например, GNU libstdc++ и LLVM libc++). Лишь в редких случаях valarrays оптимизируются ещё больше, как, например, в Intel Integrated Performance Primitives.
Параметры шаблона
| T | - | тип элементов. Тип должен соответствовать требованиям NumericType |
Типы членов
| Тип члена | Определение |
|---|---|
value_type | T |
Члены-функции
| создает новый числовой массив (публичный член-функция) |
|
| уничтожает числовой массив (публичный член-функция) |
|
| присваивает содержимое (публичный член-функция) |
|
| получить/установить элемент valarray, срез или маску (публичный член-функция) |
|
| применяет унарный арифметический оператор к каждому элементу valarray (публичный член-функция) |
|
| применяет оператор составного присваивания к каждому элементу valarray (публичный член-функция) |
|
| меняет местами с другим valarray (публичный член-функция) |
|
| возвращает размер valarray (публичный член-функция) |
|
| изменяет размер valarray (публичный член-функция) |
|
| вычисляет сумму всех элементов (публичный член-функция) |
|
| возвращает наименьший элемент (публичный член-функция) |
|
| возвращает наибольший элемент (публичный член-функция) |
|
| сдвигает элементы valarray с заполнением нулями (публичный член-функция) |
|
| циклический сдвиг элементов valarray (публичный член-функция) |
|
| применяет функцию к каждому элементу valarray (публичный член-функция) |
Внешние функции
|
(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 (шаблон функции) |
|
Вспомогательные классы
| Срез valarray, подобный BLAS: начальный индекс, длина, шаг (класс) |
|
| прокси к подмножеству valarray после применения среза (шаблон класса) |
|
| Обобщенный срез valarray: начальный индекс, набор длин, набор шагов (класс) |
|
| прокси к подмножеству valarray после применения gslice (шаблон класса) |
|
прокси к подмножеству valarray после применения булевого маскирования operator[] (шаблон класса) |
|
прокси к подмножеству valarray после применения косвенного operator[] (шаблон класса) |
Руководства по выводу типов(с C++17)
См. также
|
(parallelism TS v2) | векторный тип данных с параллельной обработкой (шаблон класса) |
|
(parallelism TS v2) | тип данных с параллельной обработкой, имеющий тип элементов bool (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/valarray