Spec-Zone.ru › C++

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
описывает новые позиции
без использования выражений

См. также

shift
сдвиг элементов valarray с заполнением нулями
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/valarray/cshift

Spec-Zone.ru

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