std::array::end,std::array::cend(3)

NAME
std::array::end,std::array::cend - std::array::end,std::array::cend

Synopsis
   iterator end() noexcept; (until C++17)
   constexpr iterator end() noexcept; (since C++17)
   const_iterator end() const noexcept; (until C++17)
   constexpr const_iterator end() const noexcept; (since C++17)
   const_iterator cend() const noexcept; (until C++17)
   constexpr const_iterator cend() const noexcept; (since C++17)
   Returns an iterator to the element following the last element of the array.
   This element acts as a placeholder; attempting to access it results in undefined
   behavior.
   range-begin-end.svg

Parameters
   (none)

Return value
   Iterator to the element following the last element.

Complexity
   Constant.

Example
// Run this code
 #include <array>
 #include <iostream>
 #include <algorithm>
 #include <iomanip>
 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 behaviour 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 elements
     std::cout << "5) ";
     std::for_each(numbers.cbegin(), numbers.cend(), [](int x) {
        std::cout << x << ' ';
     });
     std::cout << '\n';
     constexpr std::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

See also
   begin returns an iterator to the beginning
   cbegin (public member function)
   (C++11)
   end
   cend returns an iterator to the end of a container or array
   (C++11) (function template)
   (C++14)