std::swap(s...ordered_set)(3)

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

πŸ’… std::swap(s...ordered_set)(3) β€” live from the C++ Standard Libary manual ✨

🌸 NAME 🌸

std::swap(std::unordered_set) β€” yep, that’s the whole name: std::swap(std::unordered_set). Iconic, honestly.

✨ Synopsis ✨

Defined in header <unordered_set>.

template< class Key, class Hash, class KeyEqual, class Alloc >
void swap( std::unordered_set<Key, Hash, KeyEqual, Alloc>& lhs,
           std::unordered_set<Key, Hash, KeyEqual, Alloc>& rhs );

(since C++11) · (until C++17) ⏳

template< class Key, class Hash, class KeyEqual, class Alloc >
void swap( std::unordered_set<Key, Hash, KeyEqual, Alloc>& lhs,
           std::unordered_set<Key, Hash, KeyEqual, Alloc>& rhs )
    noexcept(/* see below */);

(since C++17) ✨

Okay so this is the specialized std::swap algorithm for std::unordered_set: it swaps the contents of lhs and rhs. The actual call it makes is lhs.swap(rhs). Slay.

πŸŽ€ Parameters πŸŽ€

  • lhs, rhs β€” containers whose contents to swap. Yes, both of them, bestie.

🫢 Return value 🫢

(none) β€” literally nothing comes back.

⚑ Complexity ⚑

Constant. No cap.

😭 Exceptions 😭

noexcept specification: (since C++17) noexcept(noexcept(lhs.swap(rhs))).

🧚 Example 🧚

// Run this code πŸƒβ€β™€οΈπŸ’¨

#include <algorithm>
#include <iostream>
#include <unordered_set>

int main()
{
    std::unordered_set<int> alice{1, 2, 3};
    std::unordered_set<int> bob{7, 8, 9, 10};

    auto print = [](const int& n) { std::cout << ' ' << n; };

    // Print state before swap
    std::cout << "Alice:";
    std::for_each(alice.begin(), alice.end(), print);
    std::cout << "\n" "Bob  :";
    std::for_each(bob.begin(), bob.end(), print);
    std::cout << '\n';

    std::cout << "-- SWAP\n";
    std::swap(alice, bob);

    // Print state after swap
    std::cout << "Alice:";
    std::for_each(alice.begin(), alice.end(), print);
    std::cout << "\n" "Bob  :";
    std::for_each(bob.begin(), bob.end(), print);
    std::cout << '\n';
}

🌈 Possible output 🌈

Alice: 1 2 3
Bob  : 7 8 9 10
-- SWAP
Alice: 7 8 9 10
Bob  : 1 2 3

πŸ‘€ See also πŸ‘€

  • swap β€” swaps the contents (public member function).

🏷️ Category 🏷️

  • * conditionally noexcept

Source/version and date, folded into a cute little sign-off: http://cppreference.com πŸ’– Β· 2024.06.10 πŸŽ€ Β· manual name C++ Standard Libary Β· page std::swap(s...ordered_set)(3). Byeee, bestie! πŸ’…βœ¨

πŸ“¦ where this page comes from