std::flat_multimap::erase(3)

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

✨ NAME ✨

std::flat_multimap::erase β€” and yes bestie, the NAME line is literally std::flat_multimap::erase - std::flat_multimap::erase, minimal icon behavior πŸ’…. This is the std::flat_multimap::erase(3) page from the C++ Standard Libary manual (that spelling is in the header, not me πŸ™ˆ).


πŸŽ€ Synopsis πŸŽ€

iterator erase( iterator position );                         (1)
(since C++23)
iterator erase( const_iterator pos );                        (2)
(since C++23)
iterator erase( const_iterator first, const_iterator last ); (3)
(since C++23)
size_type erase( const Key& key );                           (4)
(since C++23)
template< class K >                                          (5)
(since C++23)
size_type erase( K&& x );

okay so every single one of these overloads is since C++23 ✨. This function removes specified elements from the container, and the order of the remaining equivalent elements is preserved 🫢.

  • 1,2) Removes the element at pos.
  • 3) Removes the elements in the range [first, last), which must be a valid range in *this.
  • 4) Removes all elements with the key equivalent to key.
  • 5) Removes all elements with key that compares equivalent to the value x. This overload participates in overload resolution only if the qualified-id Compare::is_transparent is valid and denotes a type, and neither iterator nor const_iterator is implicitly convertible from K. It allows calling this function without constructing an instance of Key.
Information on iterator invalidation is copied from here β€” that's literally what the page says, so I'm passing the note straight to you, bestie 🧚.

Also important: the iterator pos must be valid and dereferenceable. Thus the end() iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos. No cap, that one matters 😭.


🌸 Parameters 🌸

  • pos β€” iterator to the element to remove
  • first, last β€” range of elements to remove
  • key β€” key value of the elements to remove
  • x β€” a value of any type that can be transparently compared with a key denoting the elements to remove

πŸ’– Return value πŸ’–

  • 1-3) Iterator following the last removed element.
  • 4) Number of elements removed.
  • 5) Number of elements removed.

🚨 Exceptions 🚨

  • 1-3) Throws nothing.
  • 4,5) Any exceptions thrown by the Compare object.

⏳ Complexity ⏳

Depends on underlying containers. Typically linear.

This section is incomplete Reason: revision required

πŸ§ͺ Example πŸ§ͺ

// Run this code

#include <flat_map>
#include <iostream>

int main()
{
    std::flat_multimap<int, std::string> c =
    {
        {1, "one"}, {2, "two"}, {3, "three"},
        {4, "four"}, {5, "five"}, {6, "six"}
    };

    // erase all odd numbers from c
    for (auto it = c.begin(); it != c.end();)
    {
        if (it->first % 2 != 0)
            it = c.erase(it);
        else
            ++it;
    }

    for (auto& p : c)
        std::cout << p.second << ' ';
    std::cout << '\n';
}

πŸ’» Output πŸ’»

two four six

πŸ‘€ See also πŸ‘€

  • clear β€” clears the contents (public member function)

πŸ—‚οΈ Category πŸ—‚οΈ

Category: * Todo with reason


xoxo, your C++ bestie πŸ’– β€” source: http://cppreference.com, version/date: 2024.06.10, page: std::flat_multimap::erase(3). Bye bestie 🫢

πŸ“¦ where this page comes from