std::set::r...:set::crend(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

Hey bestie! πŸ’– This is the std::set::r...:set::crend(3) page from the C++ Standard Libary (yes, the manual name really says β€œLibary” β€” we respect the typo era).

std::set::rend,std::set::crend - std::set::rend,std::set::crend


✨ Synopsis ✨

The synopsis is literally this, same signatures and same noexcept tea, no cap:

          reverse_iterator rend();                       (1) (noexcept since
       C++11)
          const_reverse_iterator rend() const;           (2) (noexcept since
       C++11)
          const_reverse_iterator crend() const noexcept; (3) (since C++11)

So what does it do? It returns a reverse iterator to the element following the last element of the reversed set. It corresponds to the element preceding the first element of the non-reversed set. This element acts as a placeholder, attempting to access it results in undefined behavior β€” so do not dereference it, bestie, that's not the vibe πŸ’€.

The original page also has this visual: range-rbegin-rend.svg πŸ¦‹.

πŸŽ€ Parameters πŸŽ€

(none) β€” literally zero parameters. Not a single one. Slay.

πŸ’… Return value πŸ’…

Reverse iterator to the element following the last element. That's the whole return value, periodt.

⚑ Complexity ⚑

Constant. Always. No cap.

πŸ“ Notes πŸ“

Because both iterator and const_iterator are constant iterators (and may in fact be the same type), it is not possible to mutate the elements of the container through an iterator returned by any of these member functions.

Also lowkey iconic: libc++ backports crend() to C++98 mode.

🌸 Example 🌸

Okay, run this code and watch the little ⏼ tower happen:

// Run this code

#include <iostream>
#include <set>

int main()
{
    std::set<unsigned> rep{1, 2, 3, 4, 1, 2, 3, 4};

    for (auto it = rep.crbegin(); it != rep.crend(); ++it)
    {
        for (auto n = *it; n > 0; --n)
            std::cout << "⏼" << ' ';
        std::cout << '\n';
    }
}

🌈 Output: 🌈

⏼ ⏼ ⏼ ⏼
⏼ ⏼ ⏼
⏼ ⏼
⏼

πŸ‘€ See also πŸ‘€

  • rbegin β€” returns a reverse iterator to the beginning
  • crbegin β€” public member function (C++11)
  • rend β€” returns a reverse end iterator for a container or array
  • crend β€” function template (C++14)

Bye bestie! πŸ’– Source/version: http://cppreference.com Β· date stamp: 2024.06.10 🫢

πŸ“¦ where this page comes from