Common mathematical functions | |||||||||||||||||||||||||||||||
Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray ) | |||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||
Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
template<class T> /* see below */ end( valarray<T>& v); | (1) | (since C++11) |
template<class T> /* see below */ end(const valarray<T>& v); | (2) | (since C++11) |
The overload ofstd::end forvalarray
returns an iterator of unspecified type referring to the one past the last element in the numeric array.
| (since C++20) |
value_type
, which isT
, andreference
, which isT&
.
| (since C++20) |
value_type
, which isT
, andreference
, which isconst T&
.The iterator returned from this function is invalidated when the member functionresize()
is called onv or when the lifetime ofv ends, whichever comes first.
Contents |
v | - | a numeric array |
Iterator to one past the last value in the numeric array.
May throw implementation-defined exceptions.
Unlike other functions that takestd::valarray
arguments,end()
cannot accept the replacement types (such as the types produced by expression templates) that may be returned from expressions involving valarrays:std::end(v1+ v2) is not portable,std::end(std::valarray<T>(v1+ v2)) has to be used instead.
The intent of this function is to allowrange for loops to work with valarrays, not to provide container semantics.
#include <algorithm>#include <iostream>#include <valarray> int main(){conststd::valarray<char> va{'H','e','l','l','o',',',' ','C','+','+','!','\n'}; std::for_each(std::begin(va),std::end(va),[](char c){std::cout<< c;});}
Output:
Hello, C++!
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.end() was required to support replacement types2. it was unspecified when the returned iterators will be invalidated | 1. not required 2. specified |
(C++11) | overloadsstd::begin (function template)[edit] |