std::multim...timap::cend(3)
okay bestie, welcome to std::multim...timap::cend(3) β straight from the C++ Standard Libary manual (yes, βLibary,β typo intact, it's iconic π
). this is the group-chat rundown of std::multimap::end and std::multimap::cend, no cap.
β¨ NAME β¨
std::multimap::end,std::multimap::cendβstd::multimap::end,std::multimap::cend
π«Ά Synopsis π«Ά
three overloads, and the noexcept receipts are right here:
iterator end(); (1) (noexcept since C++11)
const_iterator end() const; (2) (noexcept since C++11)
const_iterator cend() const noexcept; (3) (since C++11)
so what's the tea? Returns an iterator to the element following the last element of the multimap.
and then the warning, plain as day: This element acts as a placeholder; attempting to access it results in undefined behavior. that's the βdo not touchβ zone, bestie π. undefined behavior is not a vibe.
the original page also has a diagram asset named range-begin-end.svg; it's giving range-begin-end realness π.
π Parameters π
(none) β literally none, bestie. no parameters, no stress π«Ά
π Return value π
Iterator to the element following the last element. β that's the exact return value, periodt.
β‘ Complexity β‘
Constant. β that's it, that's the complexity β¨
π Notes π
libc++ backports cend() to C++98 mode. lowkey a nice little note, periodt.
πΈ Example πΈ
run this code, it's the whole example, character-for-character:
// Run this code
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <iostream>
#include <map>
#include <string>
int main()
{
auto show_node = [](const auto& node, char ending = '\n')
{
std::cout << "{ " << node.first << ", " << node.second << "}"
<< ending;
};
std::multimap<std::size_t, std::string> mmap;
assert(mmap.begin() == mmap.end()); // OK
assert(mmap.cbegin() == mmap.cend()); // OK
mmap.insert({ sizeof(long), "LONG" });
show_node(*(mmap.cbegin()));
assert(mmap.begin() != mmap.end()); // OK
assert(mmap.cbegin() != mmap.cend()); // OK
mmap.begin()->second = "long";
show_node(*(mmap.cbegin()));
mmap.insert({ sizeof(int), "int" });
show_node(*mmap.cbegin());
mmap.insert({ sizeof(short), "short" });
show_node(*mmap.cbegin());
mmap.insert({ sizeof(char), "char" });
show_node(*mmap.cbegin());
mmap.insert({{ sizeof(float), "float" }, { sizeof(double),
"double"}});
std::cout << "mmap = { ";
std::for_each(mmap.cbegin(), mmap.cend(), [&](const auto& n) {
show_node(n, ' '); });
std::cout << "};\n";
}
π¦ Possible output π¦
Possible output: is exactly this:
{ 8, LONG }
{ 8, long }
{ 4, int }
{ 2, short }
{ 1, char }
mmap = { { 1, char } { 2, short } { 4, int } { 4, float } { 8, long } {
8, double } };
π See also π
beginβ returns an iterator to the beginningcbeginβ(public member function); the page also has(C++11)right thereendcendβ returns an iterator to the end of a container or array; the page also has(C++11),(function template), and(C++14)nearby
okay that's the whole page, bestie. it came from http://cppreference.com, dated 2024.06.10, and the footer also spells out std::multim...timap::cend(3). stay hydrated, dereference nothing you don't own, mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms