# std::indirect_array<T>::operator=

< cpp‎ | numeric‎ | valarray‎ | indirect array

void operator=( const T& value ) const; | (1) |
void operator=( const std::valarray<T>& val_arr ) const; | (2) |
const indirect_array& operator=( const indirect_array& sl_arr) const; | (3) | (C++11 起)

将值赋值给所有被引用元素。

1) 将 `value` 赋值给所有元素。
2) 将 `val_arr` 的元素赋值给 *this 所引用的元素。
3) 将自 `sl_arr` 选择的元素赋值给 *this 所引用的元素。

### 参数

value | - | 赋值给所有被引用元素的值
val_arr | - | 用以赋值的 std::valarray
sl_arr | - | 用以赋值的 std::indirect_array

### 返回值

1-2) （无）
3) *this

### 异常

可能抛出实现定义的异常。

### 示例

    #include <iomanip>
    #include <iostream>
    #include <valarray>
    #include <numeric>

    void print(int n, std::valarray<int> const& v)
    {
        std::cout << n << ':';
        for (int e : v) std::cout << std::setw(3) << e;
        std::cout << '\n';
    }

    int main()
    {
        std::valarray<int> v(8);
        std::iota(std::begin(v), std::end(v), 0);
        print(1, v);

        std::valarray<std::size_t> idx{1, 3, 5, 7};
        const std::indirect_array<int> ia = v[idx];
        // 'ia' 代表 v[1], v[3], v[5], v[7]
        ia = -1; // (1) ，等效地：
                 // v[1] = v[3] = v[5] = v[7] = -1;
        print(2, v);

        ia = /*std::valarray<int>*/{-1, -2, -3, -4}; // (2) ，
            // 等效地： v[1]=-1, v[3]=-2, v[5]=-3, v[7]=-4;
        print(3, v);

        std::valarray<std::size_t> idx2{0, 2, 4, 6};
        const std::indirect_array<int> ia2 = v[idx2];
        // 'ia2' refers to v[0], v[2], v[4], v[6]
        ia = ia2; // (3) ，等效地：
                  // v[1]=v[0], v[3]=v[2], v[5]=v[4], v[7]=v[6];
        print(4, v);
    }

输出：

    1:  0  1  2  3  4  5  6  7
    2:  0 -1  2 -1  4 -1  6 -1
    3:  0 -1  2 -2  4 -3  6 -4
    4:  0  0  2  2  4  4  6  6