Search code examples
c++containersstandard-library

What is the address of back() in an empty container?


I mistakenly took the address of the reference returned by the back() operator in an empty container and was surprised to see that the address wasn't zero.

If a container e.g. std::deque is empty, what does back() return?


Solution

  • it returns the last element.

    on this page: http://www.sgi.com/tech/stl/BackInsertionSequence.html

    precondition: !a.empty()

    Equivalent to *(--a.end()).

    since the precondition is the deque is not empty, then it means it's undefined behavior.