Spec-Zone.ru › C++

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

Члены-функции

(конструктор)
создает новый числовой массив
(публичный член-функция)
(деструктор)
уничтожает числовой массив
(публичный член-функция)
operator=
присваивает содержимое
(публичный член-функция)
operator[]
получить/установить элемент valarray, срез или маску
(публичный член-функция)
operator+operator-operator~operator!
применяет унарный арифметический оператор к каждому элементу valarray
(публичный член-функция)
operator+=operator-=operator*=operator/=operator%=operator&=operator|=operator^=operator<<=operator>>=
применяет оператор составного присваивания к каждому элементу valarray
(публичный член-функция)
swap
меняет местами с другим valarray
(публичный член-функция)
size
возвращает размер valarray
(публичный член-функция)
resize
изменяет размер valarray
(публичный член-функция)
sum
вычисляет сумму всех элементов
(публичный член-функция)
min
возвращает наименьший элемент
(публичный член-функция)
max
возвращает наибольший элемент
(публичный член-функция)
shift
сдвигает элементы valarray с заполнением нулями
(публичный член-функция)
cshift
циклический сдвиг элементов valarray
(публичный член-функция)
apply
применяет функцию к каждому элементу valarray
(публичный член-функция)

Внешние функции

std::swap(std::valarray)
(C++11)
специализирует алгоритм std::swap
(шаблон функции)
std::begin(std::valarray)
(C++11)
перегружает std::begin
(шаблон функции)
std::end(std::valarray)
(C++11)
специализирует std::end
(шаблон функции)
operator+operator-operator*operator/operator%operator&operator|operator^operator<<operator>>operator&&operator||
применяет бинарные операторы к каждому элементу двух valarray или valarray и значения
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=
сравнивает две valarray или valarray со значением
(шаблон функции)
abs(std::valarray)
применяет функцию abs к каждому элементу valarray
(шаблон функции)
Экспоненциальные функции
exp(std::valarray)
применяет функцию std::exp к каждому элементу valarray
(шаблон функции)
log(std::valarray)
применяет функцию std::log к каждому элементу valarray
(шаблон функции)
log10(std::valarray)
применяет функцию std::log10 к каждому элементу valarray
(шаблон функции)
Функции возведения в степень
pow(std::valarray)
применяет функцию std::pow к двум valarray или valarray и значению
(шаблон функции)
sqrt(std::valarray)
применяет функцию std::sqrt к каждому элементу valarray
(шаблон функции)
Тригонометрические функции
sin(std::valarray)
применяет функцию std::sin к каждому элементу valarray
(шаблон функции)
cos(std::valarray)
применяет функцию std::cos к каждому элементу valarray
(шаблон функции)
tan(std::valarray)
применяет функцию std::tan к каждому элементу valarray
(шаблон функции)
asin(std::valarray)
применяет функцию std::asin к каждому элементу valarray
(шаблон функции)
acos(std::valarray)
применяет функцию std::acos к каждому элементу valarray
(шаблон функции)
atan(std::valarray)
применяет функцию std::atan к каждому элементу valarray
(шаблон функции)
atan2(std::valarray)
применяет функцию std::atan2 к valarray и значению
(шаблон функции)
Гиперболические функции
sinh(std::valarray)
применяет функцию std::sinh к каждому элементу valarray
(шаблон функции)
cosh(std::valarray)
применяет функцию std::cosh к каждому элементу valarray
(шаблон функции)
tanh(std::valarray)
применяет функцию std::tanh к каждому элементу valarray
(шаблон функции)

Вспомогательные классы

slice
Срез valarray, подобный BLAS: начальный индекс, длина, шаг
(класс)
slice_array
прокси к подмножеству valarray после применения среза
(шаблон класса)
gslice
Обобщенный срез valarray: начальный индекс, набор длин, набор шагов
(класс)
gslice_array
прокси к подмножеству valarray после применения gslice
(шаблон класса)
mask_array
прокси к подмножеству valarray после применения булевого маскирования operator[]
(шаблон класса)
indirect_array
прокси к подмножеству valarray после применения косвенного operator[]
(шаблон класса)

Руководства по выводу типов(с C++17)

См. также

simd
(parallelism TS v2)
векторный тип данных с параллельной обработкой
(шаблон класса)
simd_mask
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API