std::array<T,N>::end, std::array<T,N>::cend
From cppreference.com
iterator end()noexcept; | (1) | (since C++11) (constexpr since C++17) |
const_iterator end()constnoexcept; | (2) | (since C++11) (constexpr since C++17) |
const_iterator cend()constnoexcept; | (3) | (since C++11) (constexpr since C++17) |
Returns an iterator past the last element of *this.
This returned iterator only acts as a sentinel. It is not guaranteed to be dereferenceable.
Contents |
[edit]Return value
Iterator past the last element.
[edit]Complexity
Constant.
[edit]Example
Run this code
#include <algorithm>#include <array>#include <iomanip>#include <iostream> int main(){std::cout<<std::boolalpha; std::array<int, 0> empty;std::cout<<"1) "<<(empty.begin()== empty.end())<<' '// true<<(empty.cbegin()== empty.cend())<<'\n';// true// *(empty.begin()) = 42; // => undefined behavior at run-time std::array<int, 4> numbers{5, 2, 3, 4};std::cout<<"2) "<<(numbers.begin()== numbers.end())<<' '// false<<(numbers.cbegin()== numbers.cend())<<'\n'// false<<"3) "<<*(numbers.begin())<<' '// 5<<*(numbers.cbegin())<<'\n';// 5 *numbers.begin()=1;std::cout<<"4) "<<*(numbers.begin())<<'\n';// 1// *(numbers.cbegin()) = 42; // compile-time error: // read-only variable is not assignable // print out all elementsstd::cout<<"5) ";std::for_each(numbers.cbegin(), numbers.cend(), [](int x){std::cout<< x <<' ';});std::cout<<'\n'; constexprstd::array constants{'A', 'B', 'C'}; static_assert(constants.begin()!= constants.end());// OK static_assert(constants.cbegin()!= constants.cend());// OK static_assert(*constants.begin()=='A');// OK static_assert(*constants.cbegin()=='A');// OK// *constants.begin() = 'Z'; // compile-time error: // read-only variable is not assignable}
Output:
1) true true 2) false false 3) 5 5 4) 1 5) 1 2 3 4
[edit]See also
returns an iterator to the beginning (public member function) | |
(C++11)(C++14) | returns an iterator to the end of a container or array (function template) |