Sintaxis común de C++ - unordered_set

1. Requisitos previos

Importar el archivo de encabezado:

#include <unordered_set>

Dos, lo que es unordered_set

El contenedor unordered_set se puede traducir literalmente como "contenedor de conjunto desordenado". Es decir, el contenedor conjunto_desordenado es muy similar al contenedor conjunto, la única diferencia es que el contenedor conjunto ordenará los datos almacenados por sí mismo, pero el contenedor conjunto_desordenado no lo hará.

Varias características de unordered_set:

  1. Los datos ya no se almacenan en forma de pares clave-valor, sino que el valor de los datos se almacena directamente;
  2. Los valores de cada elemento almacenado en el contenedor no son iguales entre sí y no se pueden modificar;
  3. No ordena los datos almacenados internamente

3. Inicialización de unordered_set

Crear un conjunto vacío

unordered_set<int> set1;

copiar construcción

unordered_set<int> set2(set1);

usar la construcción del iterador

unordered_set<int> set3(set1.begin(), set1.end());

Construir con una matriz como su valor inicial

unordered_set<int> set4(arr,arr+5);

estructura móvil

unordered_set<int> set5(move(set2));

Construir con lista de disposición

unordered_set<int> set6 {
    
    1,2,10,10};

4. Funciones integradas comúnmente utilizadas de unordered_set

función vacía () - para determinar si está vacío
// Si el contenedor está vacío, devuelve verdadero; de lo contrario, falso

set1.empty();

Función find () - buscar
// encontrar 2, devolver iterador si se encuentra, devolver end () en caso de falla

set1.find(2);

función count () - número de ocurrencias
// devuelve el número de ocurrencias de 2, 0 o 1

set1.count(2);

función insert() - inserta un elemento

//插入元素,返回pair<unordered_set<int>::iterator, bool>
set1.insert(3);
//使用initializer_list插入元素
set1.insert({
    
    1,2,3});
//指定插入位置,如果位置正确会减少插入时间,返回指向插入元素的迭代器
set1.insert(set1.end(), 4);
//使用范围迭代器插入
set1.insert(set2.begin(), set2.end());

Con respecto al valor de retorno de la función de inserción:
insert() solo pasa un único parámetro (el elemento que se insertará)

  1. devolverá un objeto par
  2. El objeto de par contiene un iterador y un valor booleano adicional que indica si la inserción se realizó correctamente.
  3. Si se insertó el elemento, el iterador devuelto apuntará al nuevo elemento
  4. Si no se inserta, iterador al elemento que impidió la inserción
auto pr = words.insert("ninety"); // Returns a pair - an iterator & a bool value

insert() pasa dos parámetros (iterador + elemento a insertar)

  1. Se puede usar un iterador como primer parámetro de insert(), que especifica la posición en la que se insertará el elemento.
  2. En este caso, solo se devolverá un iterador.
auto iter = words.insert (pr.first, "nine"); // 1st arg is a hint. Returns an iterator

insert() pasa en la lista de inicialización

  1. insertar elementos en la tabla de inicialización
  2. En este caso no se devuelve nada.
words.insert({
    
    "ten", "seven", "six"});  // Inserting an initializer list

función emplace () - elementos de inserción (construcción de transferencia)

//使用转移构造函数添加新元素3,比insert效率高
set1.emplace(3);

función erase() - eliminar un elemento

//删除操作,成功返回1,失败返回0
set1.erase(1);
//删除操作,成功返回下一个pair的迭代器
set1.erase(set1.find(1));
//删除set1的所有元素,返回指向end的迭代器
set1.erase(set1.begin(), set1.end());

función bucket_count() - el número de cestas

//返回容器中的篮子总数
set1.bucket_count();

función bucket_size() - el número de elementos en la cesta

//返回1号篮子中的元素数
set1.bucket_size(1);

función cubo () - en qué cesta

//元素1在哪一个篮子
set1.bucket(1);

Función borrar () - borrar

set1.clear();

función load_factor() - factor de carga

//负载因子,返回每个篮子元素的平均数,即size/float(bucket_count);
set1.load_factor();

función rehash() - establece el número de cestas y redistribuye

//设置篮子的数量为20,并且重新rehash
set1.rehash(20);

Supongo que te gusta

Origin blog.csdn.net/LiuXF93/article/details/120899401
Recomendado
Clasificación