template< class C >
auto end( C& c ) -> decltype(c.end());
template< class C >
auto end( const C& c ) -> decltype(c.end());
constexpr auto cend( const C& c ) noexcept(/* see below */)
Returns an iterator to the end (i.e. the element after the last element) of the given range.
1,2) Returns c.end(), which is typically an iterator one past the end of the sequence represented by c.
1)If
C
is a standard
Container, returns a
C::iterator
object.
2)If
C
is a standard
Container, returns a
C::const_iterator
object.
3) Returns a pointer to the end of array.
4) Returns std::end(c), with c always treated as const-qualified.
If
C
is a standard
Container, returns a
C::const_iterator
object.
[edit] Parameters c - a container or view with anend
member function array - an array of arbitrary type [edit] Return value
1,2) c.end()
3) array + N
4) c.end()
[edit] Exceptions 4) noexceptspecification:
noexcept(noexcept(std::end(c)))
[edit] OverloadsCustom overloads of end
may be provided for classes and enumerations that do not expose a suitable end()
member function, yet can be iterated. The following overloads are already provided by the standard library:
Similar to the use of swap
(described in Swappable), typical use of the end
function in generic context is an equivalent of using std::end; end(arg);, which lets both the ADL-selected overloads for user-defined types and the standard library function templates to appear in the same overload set.
template<typename Container, typename Function> void for_each(Container&& cont, Function f) { using std::begin; auto it = begin(cont); using std::end; auto end_it = end(cont); for (; it != end_it; ++it) f(*it); }[edit] Notes
The non-array overloads exactly reflect the behavior of C::end(). Their effects may be surprising if the member function does not have a reasonable implementation.
std::cend
is introduced for unification of member and non-member range accesses. See also LWG issue 2128.
If C
is a shallow-const view, std::cend
may return a mutable iterator. Such behavior is unexpected for some users. See also P2276 and P2278.
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; if (std::find(std::begin(v), std::end(v), 5) != std::end(v)) std::cout << "Found a 5 in vector v!\n"; int w[] = {5, 10, 15}; if (std::find(std::begin(w), std::end(w), 5) != std::end(w)) std::cout << "Found a 5 in array w!\n"; }
Output:
[edit] See also returns an iterator to the beginning of a container or arrayRetroSearch 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