std::valarray<T>::cshift
来自 zh.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++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 618 | C++98 |
若
size()
为
0
则移位元素的表达式包含零除错误 |
在不使用表达式的情况下
描述新位置 |
参见
|
对 valarray 的元素进行零填充移位
(公开成员函数) |