# std::multiset<Key,Compare,Allocator>::insert_range

From cppreference.com
< cpp‎ | container‎ | multiset

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

Inserts a copy of each element in the range rg.

Each iterator in the range rg is dereferenced exactly once. The behavior is undefined if rg overlaps with the container.

No iterators or references are invalidated.

### Parameters

rg | - | a container compatible range, that is, an `input_range` whose elements are convertible to `T`
Type requirements
- `value_type` must be EmplaceConstructible into `multiset` from *ranges::begin(rg). Otherwise, the behavior is undefined.

### Return value

(none)

### Complexity

N·log(a.size() + N), where `N` is ranges::distance(rg).

### Notes

Feature-test macro | Value | Std | Feature
--- | --- | --- | ---
`__cpp_lib_containers_ranges` | `202202L` | (C++23) | Ranges-aware construction and insertion

### Example

Run this code

    #include <iostream>
    #include <set>

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

    int main()
    {
        auto container = std::multiset{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 3 4

### See also

insert | inserts elements or nodes(since C++17) (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/multiset/insert_range&oldid=156365"