std::valarray<T>::operator=
来自cppreference.com
valarray<T>& operator=( const valarray<T>& other ); |
(1) | |
valarray<T>& operator=( valarray<T>&& other ) noexcept; |
(2) | (C++11 起) |
valarray<T>& operator=( const T& val ); |
(3) | |
valarray<T>& operator=( const std::slice_array<T>& other); |
(4) | |
valarray<T>& operator=( const std::gslice_array<T>& other); |
(5) | |
valarray<T>& operator=( const std::mask_array<T>& other ); |
(6) | |
valarray<T>& operator=( const std::indirect_array<T>& other ); |
(7) | |
valarray<T>& operator=( std::initializer_list<T> il ); |
(8) | (C++11 起) |
替换数值数组的内容。
1) 复制赋值运算符。
*this
的每个元素被赋 other
的值。若 other
的长度不等于 *this
的长度,则行为未定义 (C++11 前)首先如通过 resize(other.size()) 重置大小 (C++11 起)。2) 移动赋值运算符。以
other
的内容替换 *this
的内容。此操作后 other
的内容未指定。若 T 拥有非平凡构造函数则此操作的复杂度可能为线性,但否则通常为常数。3) 以f
val
的副本替换 *this
中的每个值。4-7) 以泛型化下标运算的结果替换
*this
的内容。若参数的长度不等于 *this
的长度,或若任何左侧的值依赖右侧的值(例如 v=v[v>2] ),则行为未定义。8) 赋值
il
的内容。等价于 *this = valarray(il) 。参数
other | - | 要赋值的另一数值数组(或掩码) |
val | - | 用以初始化每个元素的值 |
il | - | 要赋值的 initializer_list |
返回值
*this
异常
1) (无)
3-8) (无)
示例
运行此代码
#include <valarray> #include <iostream> int main() { std::valarray<int> v1(3); v1 = -1; // 从标量 std::cout << "assigned from scalar: "; for(int n: v1) std::cout << n << ' '; std::cout << '\n'; v1 = {1, 2, 3, 4, 5, 6}; // 从不同大小的 initializer_list std::cout << "assigned from initializer_list: "; for(int n: v1) std::cout << n << ' '; std::cout << '\n'; std::valarray<int> v2(3); v2 = v1[std::slice(0,3,2)]; // 从 slice_array std::cout << "every 2nd element starting at pos 0: "; for(int n: v2) std::cout << n << ' '; std::cout << '\n'; v2 = v1[v1 % 2 == 0]; // from mask array std::cout << "values that are even : "; for(int n: v2) std::cout << n << ' '; std::cout << '\n'; std::valarray<std::size_t> idx = {0,1,2,4}; // 下标数组 v2.resize(4); // 从泛型下标赋值时大小必须匹配 v2 = v1[idx]; // 从 indirect_array std::cout << "values at positions 0,1,2,4: "; for(int n: v2) std::cout << n << ' '; std::cout << '\n'; }
输出:
assigned from scalar: -1 -1 -1 assigned from initializer_list: 1 2 3 4 5 6 every 2nd element starting at pos 0: 1 3 5 values that are even : 2 4 6 values at positions 0,1,2,4: 1 2 3 5