名前空間
変種
操作

std::valarray<T>::operator=

提供: cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
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) ムーブ代入演算子。 *this の内容を other の内容で置き換えます。 この操作の後、 other の値は未規定になります。 この操作の計算量は T が非トリビアルなデストラクタを持つ場合は線形になるかもしれませんが、そうでなければ通常は一定です。
3) *this 内のそれぞれの値を val のコピーで置き換えます。
4-7) *this の内容を一般化された添字演算の結果で置き換えます。 引数の長さが *this の長さと等しくない場合、または左のいずれかの値が右の値に依存する場合 (例えば v=v[v>2])、動作は未定義です。
8) 初期化子リスト il の内容を代入します。 *this = valarray(il) と同等です。

目次

[編集] 引数

other - 代入する別の数値配列 (またはマスク)
val - 各要素を初期化するための値
il - 代入する初期化子リスト

[編集] 戻り値

*this

[編集] 例外

1) (なし)
3-8) (なし)

[編集]

#include <valarray>
#include <iostream>
 
int main()
{
    std::valarray<int> v1(3);
    v1 = -1; // from a scalar 
    std::cout << "assigned from scalar: ";
    for(int n: v1) std::cout << n << ' '; std::cout << '\n';
 
    v1 = {1, 2, 3, 4, 5, 6}; // from initializer list of different size
    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)]; // from 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}; // index array
    v2.resize(4); // sizes must match when assigning from gen subscript
    v2 = v1[idx]; // from 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