std::map<Key,T,Compare,Allocator>::merge
De cppreference.com
template<class C2> void merge( std::map<Key, T, C2, Allocator>& source ); |
(1) | (desde C++17) |
template<class C2> void merge( std::map<Key, T, C2, Allocator>&& source ); |
(2) | (desde C++17) |
template<class C2> void merge( std::multimap<Key, T, C2, Allocator>& source ); |
(3) | (desde C++17) |
template<class C2> void merge( std::multimap<Key, T, C2, Allocator>&& source ); |
(4) | (desde C++17) |
Intenta extraer (splice) cada elemento en source e insertarlo en *this usando el objeto de comparación de *this.
Si existe un elemento en *this con una clave equivalente a la clave del elemento de source, entonces ese elemento no se extrae de source.
No se copia ni se mueve ningún elemento, solo se vuelven a apuntar los punteros internos de los nodos del contenedor. Todos los punteros y referencias a los elementos transferidos siguen siendo válidos, pero ahora se refieren a *this, no a source.
El comportamiento no está definido si get_allocator() != source.get_allocator().
Parámetros
| source | - | Contenedor compatible del cual transferir los nodos. |
Valor de retorno
(Ninguno)
Excepciones
No lanza excepciones a menos que la comparación lance.
Complejidad
N*log(size()+N)), donde N es source.size().
Ejemplo
Ejecuta este código
#include <map>
#include <iostream>
#include <string>
int main()
{
std::map<int, std::string> ma {{1, "apple"}, {5, "pear"}, {10, "banana"}};
std::map<int, std::string> mb {{2, "zorro"}, {4, "batman"}, {5, "X"}, {8, "alpaca"}};
std::map<int, std::string> u;
u.merge(ma);
std::cout << "ma.size(): " << ma.size() << '\n';
u.merge(mb);
std::cout << "mb.size(): " << mb.size() << '\n';
std::cout << "mb.at(5): " << mb.at(5) << '\n';
for(auto const &kv: u)
std::cout << kv.first << ", " << kv.second << '\n';
}
Salida:
ma.size(): 0
mb.size(): 1
mb.at(5): X
1, apple
2, zorro
4, batman
5, pear
8, alpaca
10, banana
Véase también
(C++17) |
Extrae nodos del contenedor (función miembro pública) |
| Inserta elementos o nodos (desde C++17) (función miembro pública) |