std::flat_s...insert_range(3)

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

πŸ’… std::flat_set::insert_range πŸ’…

okay bestie, this is the std::flat_set::insert_range page from the C++ Standard Libary manual β€” yes, that's the manual name, and yes, we are keeping the spelling exactly as it is. 🫢


🌸 NAME 🌸

std::flat_set::insert_range β€” std::flat_set::insert_range

✨ Synopsis ✨

template< container-compatible-range<value_type> R >  (since C++23)
void insert_range( R&& rg );

So this one is a C++23 girlie, and she takes a range and puts it into the set. πŸ’…

It inserts a copy of each element in the range rg into underlying container c as if by:

for (const auto& e : rg)
    c.insert(c.end(), e);

Then, sorts the range of newly inserted elements with respect to compare. Merges the resulting sorted range and the sorted range of pre-existing elements into a single sorted range. Finally, erases all but the first element from each group of consecutive equivalent elements.

Each iterator in the range rg is dereferenced exactly once.

⚠️ The behavior is undefined if rg overlaps with the container. no cap, do not do that. πŸ’€
🫢 tiny note from the page: β€œInformation on iterator invalidation is copied from here” β€” that's the literal wording, bestie.

πŸŽ€ Parameters πŸŽ€

  • rg β€” a container compatible range, that is, an input_range whose elements are convertible to T

πŸ¦‹ Return value πŸ¦‹

  • (none)

🌈 Complexity 🌈

  • N + MΒ·log(M), where N is size() before the operation and M is ranges::distance(rg).

πŸ’œ Notes πŸ’œ

  • Since insert_range performs an in-place merge operation, that may allocate memory.

πŸ“ Example πŸ“

// Run this code

#include <iostream>
#include <flat_set>

void println(auto, auto const& container)
{
    for (const auto& elem : container)
        std::cout << elem << ' ';
    std::cout << '\n';
}

int main()
{
    auto container = std::flat_set{1, 3, 2, 4};
    const auto rg = {-1, 3, -2};
#ifdef __cpp_lib_containers_ranges
    container.insert_range(rg);
#else
    container.insert(rg.begin(), rg.end());
#endif
    println("{}", container);
}

Output:

-2 -1 1 2 3 4

πŸ‘‘ See also πŸ‘‘

  • insert β€” inserts elements (public member function)

that's the whole page, bestie! source/version/date: http://cppreference.com β€’ 2024.06.10 β€’ page std::flat_s...insert_range(3) πŸ’–βœ¨

πŸ“¦ where this page comes from