table of contents
        
      
      
    | std::valarray::operator=(3) | C++ Standard Libary | std::valarray::operator=(3) | 
NAME¶
std::valarray::operator= - std::valarray::operator=
Synopsis¶
 valarray<T>& operator=( const valarray<T>&
    other ); (1)
  
   valarray<T>& operator=( valarray<T>&& other )
    noexcept; (2) (since 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) (since C++11)
  
   Replaces the contents of the numeric array.
  
   1) Copy assignment operator. Each element of *this is assigned the value of
    the
  
   corresponding element of other. If the length of other does not equal the
    length of
  
   *this,
  
   the behavior is undefined
  
   (until C++11)
  
   first resizes as if by resize(other.size())
  
   (since C++11).
  
   2) Move assignment operator. Replaces the contents of *this with those of
    other. The
  
   value of other is unspecified after this operation. The complexity of this
    operation
  
   may be linear if T has non-trivial destructors, but is usually constant
    otherwise.
  
   3) Replaces each value in *this with a copy of val.
  
   4-7) Replaces the contents of *this with the result of a generalized
    subscripting
  
   operation. The behavior is undefined if the length of the argument does not
    equal
  
   the length of *this or if any value on the left depends on the value on the
    right
  
   (e.g v=v[v>2]).
  
   8) Assigns the contents of initializer list il. Equivalent to *this =
    valarray(il).
Parameters¶
 other - another numeric array (or a mask) to assign
  
   val - the value to initialize each element with
  
   il - initializer list to assign
Return value¶
*this
Exceptions¶
1, 3-8) May throw implementation-defined exceptions.
Example¶
// Run this code
  
   #include <iomanip>
  
   #include <iostream>
  
   #include <valarray>
  
   void print(const char* rem, const std::valarray<int>& v)
  
   {
  
   std::cout << std::left << std::setw(36) << rem <<
    std::right;
  
   for (int n: v) std::cout << std::setw(3) << n;
  
   std::cout << '\n';
  
   }
  
   int main()
  
   {
  
   std::valarray<int> v1(3);
  
   v1 = -1; // (3) from a scalar
  
   print("assigned from scalar: ", v1);
  
   v1 = {1, 2, 3, 4, 5, 6}; // (8): from initializer list of different size
  
   print("assigned from initializer_list:", v1);
  
   std::valarray<int> v2(3);
  
   v2 = v1[std::slice(0,3,2)]; // (4): from slice array
  
   print("every 2nd element starting at pos 0:", v2);
  
   v2 = v1[v1 % 2 == 0]; // (6): from mask array
  
   print("values that are even:", v2);
  
   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]; // (7): from indirect array
  
   print("values at positions 0, 1, 2, 4:", v2);
  
   }
Output:¶
 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
| 2022.07.31 | http://cppreference.com |