std::valarray<T>:: cshift
From 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 <iostream> #include <valarray> int main() { std::valarray<int> v{1, 2, 3, 4, 5, 6, 7, 8}; for (auto const& val : v) std::cout << val << ' '; std::cout << '\n'; std::valarray<int> v2 = v.cshift(2); for (auto const& val : v2) std::cout << val << ' '; std::cout << '\n'; }
输出:
1 2 3 4 5 6 7 8 3 4 5 6 7 8 1 2
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 618 | C++98 |
若
size()
为
0
则移位元素的表达式包含零除错误 |
在不使用表达式的情况下
描述新位置 |
参见
|
对 valarray 的元素进行零填充移位
(公开成员函数) |