std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: insert_range
|
template
<
container-compatible-range
<
value_type
>
R
>
void insert_range ( R && rg ) ; |
(depuis C++23)
(constexpr depuis C++26) |
|
Insère une copie de chaque élément dans la plage rg .
Chaque itérateur dans la plage rg est déréférencé exactement une fois.
Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :
-
value_typen'est pas EmplaceConstructible dansunordered_multisetà partir de * ranges:: begin ( rg ) - rg et * this se chevauchent.
Si après l'opération le nouveau nombre d'éléments est supérieur à l'ancien
max_load_factor()
*
bucket_count()
un rehashing a lieu.
Si un rehashing se produit (en raison de l'insertion), tous les itérateurs sont invalidés. Sinon (aucun rehashing), les itérateurs ne sont pas invalidés.
Table des matières |
Paramètres
| rg | - |
un
intervalle compatible avec un conteneur
, c'est-à-dire un
input_range
dont les éléments sont convertibles en
T
|
Complexité
Cas moyen N , cas le pire O(N·S+N) , où S est size ( ) et N est ranges:: distance ( rg ) .
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes |
Exemple
#include <iostream> #include <unordered_set> void println(auto, const auto& container) { for (const auto& elem : container) std::cout << elem << ' '; std::cout << '\n'; } int main() { auto container = std::unordered_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); }
Sortie possible :
1 -2 3 3 2 -1 4
Voir aussi
|
insère des éléments
ou des nœuds
(depuis C++17)
(fonction membre publique) |