From cppreference.com
template<container-compatible-range<value_type>R>voidinsert_range(R&&rg);(since C++23)Inserts a copy of each element in the range rg if and only if there is no element with key equivalent to the key of that element in *this.
Each iterator in the range rg is dereferenced exactly once. The behavior is undefined if rg overlaps with the container.
If after the operation the new number of elements is greater than old
*
a rehashing takes place.
If rehashing occurs (due to the insertion), all iterators are invalidated. Otherwise (no rehashing), iterators are not invalidated.
Parameters
Return value
(none)
Complexity
Average case O(N), where N is ranges::distance(rg), worst case O(N·(a.size()+1)).
Notes
macroValueStdFeature
(C++23)
construction and insertion Example
Run this code
#include<iostream>#include<unordered_set>voidprintln(auto,autoconst&container){for(constauto&elem:container)std::cout<<elem<<' ';std::cout<<'\n';}intmain(){autocontainer=std::unordered_set{1,3,2,4};constautorg={-1,3,-2};#ifdef __cpp_lib_containers_rangescontainer.insert_range(rg);#elsecontainer.insert(rg.begin(),rg.end());#endifprintln("{}",container);}Possible output:
4 -1 2 3 -2 1 See also
inserts elements or nodes(since C++17)
(public member function)