std::experi...ordered_map)(3)

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

πŸ’… std::experi...ordered_map)(3) πŸ’…

okay so bestie, this page is from the C++ Standard Libary β€” yes, that's the manual name on the tin β€” and it's all about std::experimental::erase_if(std::unordered_map). It's giving experimental-container cleanup realness, and honestly it ate. Let's get into it πŸ’–


πŸ’– NAME πŸ’–

std::experimental::erase_if(std::unordered_map) β€” std::experimental::erase_if(std::unordered_map)

✨ Synopsis ✨

Defined in header <experimental/unordered_map> β€” that's the header, bestie, no cap.

Tagged as library fundamentals TS v2, iykyk.

template< class Key, class T, class Hash, class KeyEqual,
class Alloc, class Pred >
void erase_if( std::unordered_map<Key, T, Hash, KeyEqual,
Alloc>& c, Pred pred );

Bestie, it erases all elements that satisfy the predicate pred from the container. That's the whole ~vibe~. Equivalent to:

for (auto i = c.begin(), last = c.end(); i != last;)
{
    if (pred(*i))
        i = c.erase(i);
    else
        ++i;
}

πŸŽ€ Parameters πŸŽ€

  • c β€” container from which to erase
  • pred β€” predicate that determines which elements should be erased

πŸŒ€ Complexity πŸŒ€

Linear. periodt.

πŸ“ Example πŸ“

Run this code, bestie:

        // Run this code

        #include <experimental/unordered_map>
        #include <iostream>

        template<typename Os, typename Container>
        inline Os& operator<<(Os& os, Container const& cont)
        {
            os << '{';
            for (const auto& item : cont)
                os << '{' << item.first << ", " << item.second << '}';
            return os << '}';
        }

        int main()
        {
            std::unordered_map<int, char> data{{1, 'a'},{2, 'b'},{3, 'c'},{4,
       'd'},
                                               {5, 'e'},{4, 'f'},{5, 'g'},{5,
       'g'}};
            std::cout << "Original:\n" << data << '\n';
            std::experimental::erase_if(data, [](const auto& item)
            {
                return (item.first & 1) == 1;
            });
            std::cout << "Erase items with odd keys:\n" << data << '\n';
        }

🌈 Possible output 🌈

        Original:
        {{5, e}{4, d}{3, c}{2, b}{1, a}}
        Erase items with odd keys:
        {{4, d}{2, b}}

πŸ‘€ See also πŸ‘€

  • remove β€” removes elements satisfying specific criteria
  • remove_if β€” function template

🏷️ Category 🏷️

  • Noindexed pages

k bye bestie β€” this one comes from http://cppreference.com, dated 2024.06.10, and its manual page tag is std::experi...ordered_map)(3). slay πŸ’…βœ¨

πŸ“¦ where this page comes from