C++ Array Library - cend() Function


The C++ function std::array::cend() returns a constant iterator which points to the past-end element of array. An iterator returned by this method can be used to iterate array contents but cannot be used to modify array contents, even if array object itself is not constant.


Following is the declaration for std::array::cend() function form std::array header.

const_iterator cend() const noexcept;



Return Value

Returns a constant iterator pointing to the past-end element of the array. This is a place-holder location and doesn't store any actual data. So dereferencing this will cause undefined behavior.


This member function never throws exception.

Time complexity

Constant i.e. O(1)


Let us try to modify the value to which const iterator is pointing.

#include <iostream>
#include <array>

using namespace std;

int main(void) {

   array<int, 5> arr = {10, 20, 30, 40, 50};
   auto it = arr.cend(); /* iterator pointing to past−the−end of array */

   /* ERROR: attempt to modification will cause compilation error */
   *it = 5;

   return 0;

Above program produces following error message.

cend.cpp: In function ‘int main()’:
cend.cpp:12:8: error: assignment of read-only location ‘* it’
   *it = 5;