std::unordered_set<Key,Hash,KeyEqual,Allocator>::emplace
template<class... Args> std::pair<iterator,bool> emplace( Args&&... args); | (desde C++11) | |
Inserta (emplaza) un nuevo elemento en el contenedor construido en el sitio con los argumentos dados args
si no hay un elemento en el contenedor con la clave.
El uso cuidadoso de emplace
permite construir el nuevo elemento evitando operaciones innecesarias de copia o movimiento. El constructor del nuevo elemento se llama con exactamente los mismos argumentos que se le suplementaron a emplace
, reenviados mediante std::forward<Args>(args).... El elemento puede construirse incluso si ya hay un elemento con la clave en el contenedor, en cuyo caso el elemento recién construido se destruirá inmediatamente..
Si ocurre una redispersión (rehashing) debido a la inserción, se invalidan todos los iteradores. De lo contrario, no se afectan los iteradores. Las referencias no se invalidan. La dispersión vuelve a ocurrir solo si el nuevo número de elementos es mayor que max_load_factor()*bucket_count().
Contenido |
[editar]Parámetros
args | - | Los argumentos a reenviar al constructor del elemento. |
[editar]Valor de retorno
Devuelve un par que consta de un iterador para el elemento insertado, o el elemento ya existente si no se realizó ninguna inserción, y un bool que indica si la inserción tuvo lugar (true si la inserción ocurrió, false si no ocurrió).
[editar]Excepciones
Si se lanza una excepción por cualquier operación, esta función no surte efecto.
[editar]Complejidad
Constante amortizada en promedio, en el peor de los casos lineal en el tamaño del contenedor.
[editar]Ejemplo
Esta sección está incompleta Razón: sin ejemplo |
[editar]Véase también
(C++11) | Construye elementos en el sitio utilizando una pista. (función miembro pública) |
(C++11) | Inserta elementos o nodos(desde C++17) (función miembro pública) |