std::valarray<T>::cshift
ja.cppreference.net から
valarray<T> cshift( int count ) const;
|
||
同じサイズの新しい valarray を返します。要素の位置が count 要素だけ循環的にシフトされます。
count が非負の値の場合、要素を左に count 位置だけ循環的にシフトし、count が負の値の場合、要素を右に -count 位置だけ循環的にシフトします。
パラメータ
| count | - | 要素をシフトする位置の数 |
戻り値
循環的にシフトされた要素を持つ結果のvalarray。
注記
この関数は、std::valarrayとは異なる戻り値の型で実装されることがあります。この場合、置換型は以下の特性を持ちます:
- すべての
conststd::valarrayのメンバ関数が提供されます。 - std::valarray、std::slice_array、std::gslice_array、std::mask_arrayおよびstd::indirect_arrayは置換型から構築できます。
-
すべての
const std::valarray<T>&(begin()およびend()を除く(C++11から))を取る関数に対して、置換型を取る同一の関数が追加されます。 - 2つの
const std::valarray<T>&引数を取るすべての関数に対して、const std::valarray<T>&と置換型のすべての組み合わせを取る同一の関数が追加されます。 - 戻り値の型は、最も深くネストされた引数型よりも2レベルを超えるテンプレートのネストを追加しません。
例
このコードを実行
#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 | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 618 | C++98 |
シフトされた要素の式に
ゼロ除算が含まれる場合
size()
が
0
|
式を使用せずに新しい位置を
記述する |
関連項目
|
valarrayの要素をゼロ埋めシフトする
(公開メンバ関数) |