std::valarray<T>::cshift
С ru.cppreference.net
valarray<T> cshift( int count ) const;
|
||
Возвращает новый valarray того же размера с элементами, позиции которых циклически сдвинуты на count элементов.
Неотрицательное значение count сдвигает элементы циклически влево на count позиций, а отрицательное значение count сдвигает элементы циклически вправо на -count позиций.
Параметры
| 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
(публичная функция-член) |