A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../named_req/../numeric/valarray/begin2.html below:

std::begin(std::valarray) - cppreference.com

template< class T >
/* see below */ begin( valarray<T>& v );

(1) (since C++11)

template< class T >
/* see below */ begin( const valarray<T>& v );

(2) (since C++11)

The overload of std::begin for valarray returns an iterator of unspecified type referring to the first element in the numeric array.

1)

The return type must

2)

The return type must

The iterator returned from this function is invalidated when the member function resize() is called on v or when the lifetime of v ends, whichever comes first.

[edit] Parameters [edit] Return value

Iterator to the first value in the numeric array.

[edit] Exceptions

May throw implementation-defined exceptions.

[edit] Notes

Unlike other functions that take std::valarray arguments, begin() cannot accept the replacement types (such as the types produced by expression templates) that may be returned from expressions involving valarrays: std::begin(v1 + v2) is not portable, std::begin(std::valarray<T>(v1 + v2)) has to be used instead.

The intent of this function is to allow range for loops to work with valarrays, not to provide container semantics.

[edit] Example
#include <algorithm>
#include <iostream>
#include <valarray>
 
void show(const std::valarray<int>& v)
{
    std::for_each(std::begin(v), std::end(v), [](int c)
    {
        std::cout << c << ' ';
    });
    std::cout << '\n';
};
 
int main()
{
    const std::valarray<int> x{47, 70, 37, 52, 90, 23, 17, 33, 22, 16, 21, 4};
    const std::valarray<int> y{25, 31, 71, 56, 21, 21, 15, 34, 21, 27, 12, 6};
 
    show(x); 
    show(y); 
 
    const std::valarray<int> z{x + y};
 
    for (char c : z)
        std::cout << c;
}

Output:

47 70 37 52 90 23 17 33 22 16 21 4 
25 31 71 56 21 21 15 34 21 27 12 6 
Hello, C++!
[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior LWG 2058 C++11 1. begin() was required to support replacement types
2. it was unspecified when the returned iterators will be invalidated 1. not required
2. specified [edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4