std::valarray<T>::cshift
valarray<T> cshift( int count ) const; |
Возвращает новый valarray того же размера, элементы которого циклически сдвинуты на count позиций.
Неотрицательное значение count циклически сдвигает элементы влево на count позиций, а отрицательное значение count циклически сдвигает элементы вправо на -count позиций.
Параметры
| count | - | число позиций, на которое нужно сдвинуть элементы |
Возвращаемое значение
Результирующий valarray с циклически сдвинутыми элементами.
Примечания
Функция может быть реализована с типом возвращаемого значения, отличным от std::valarray. В этом случае тип-замена обладает следующими свойствами:
- Предоставляются все функции-члены
std::valarrayс квалификатором const. -
std::valarray,std::slice_array,std::gslice_array,std::mask_arrayиstd::indirect_arrayмогут быть созданы из типа-замены. - Для каждой функции, принимающей аргумент типа conststd::valarray<T>& за исключением
begin()иend()(начиная с C++11), должны быть добавлены идентичные функции, принимающие типы-замены; - Для каждой функции, принимающей два аргумента типа conststd::valarray<T>&, должны быть добавлены идентичные функции, принимающие все комбинации аргументов типов conststd::valarray<T>& и типов-замен;
- Тип возвращаемого значения не добавляет более двух уровней вложенности шаблонов относительно типа самого глубоко вложенного аргумента.
Пример
#include <print>
#include <valarray>
int main()
{
const std::valarray<int> v{1, 2, 3, 4, 5, 6, 7, 8};
std::println("{}", v);
std::println("{} <- 3", v.cshift(3));
std::println("{} <- 11", v.cshift(11));
std::println("{} -> 2", v.cshift(-2));
std::println("{} -> 10", v.cshift(-10));
}
Вывод:
[1, 2, 3, 4, 5, 6, 7, 8] [4, 5, 6, 7, 8, 1, 2, 3] <- 3 [4, 5, 6, 7, 8, 1, 2, 3] <- 11 [7, 8, 1, 2, 3, 4, 5, 6] -> 2 [7, 8, 1, 2, 3, 4, 5, 6] -> 10
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применён к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 618 | C++98 | выражение для сдвинутых элементов содержит деление на ноль, если size() равно 0 | описывает новые позиции без использования выражений |
См. также
| сдвиг элементов valarray с заполнением нулями (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/valarray/cshift