Namespaces
Variants

std::valarray<T>::cshift

С ru.cppreference.net
 
 
 
 
valarray<T> cshift( int count ) const;

Возвращает новый valarray того же размера с элементами, позиции которых циклически сдвинуты на count элементов.

Неотрицательное значение count сдвигает элементы циклически влево на count позиций, а отрицательное значение count сдвигает элементы циклически вправо на -count позиций.

12

Параметры

count - количество позиций для сдвига элементов

Возвращаемое значение

Результирующий valarray с циклически сдвинутыми элементами.

Примечания

Функция может быть реализована с типом возврата, отличным от std::valarray. В этом случае замещающий тип имеет следующие свойства:

  • Все const функции-члены std::valarray предоставлены.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array и std::indirect_array могут быть созданы из замещающего типа.
  • Для каждой функции, принимающей const std::valarray<T>& за исключением begin() и end()(начиная с C++11), должны быть добавлены идентичные функции, принимающие замещающие типы;
  • Для каждой функции, принимающей два const std::valarray<T>& аргумента, должны быть добавлены идентичные функции, принимающие любую комбинацию const std::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++.

DR Applied to Behavior as published Correct behavior
LWG 618 C++98 выражение сдвинутых элементов
содержит деление на ноль, если size() равно ​ 0 ​
описывает новые позиции
без использования выражений

Смотрите также

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