Os elementos não podem ser modificados diretamente, eles precisam ser excluídos e depois inseridos.
Iteradores unidirecionais são suportados.
Um iterador não é invalidado quando um elemento é inserido e um iterador apontando para o elemento excluído é invalidado quando um elemento é excluído.
A complexidade de tempo de inserção, exclusão e localização de elementos é O(1), pior caso O(n). .
_Value: Indica o tipo de dado armazenado _Hash: Tipo de objeto de função hash _Pred: Indica o método de classificação de acordo com a chave. _Alloc: Indica o tipo do alocador armazenado, que é responsável pela alocação e liberação da memória do elemento. Parâmetro opcional, geralmente não usado.
A função at() e o operador subscrito não são suportados para acessar elementos
Inserção e exclusão de elementos
função
valor de retorno
Função
claro()
nenhum
limpar todos os elementos
apagar()
iterador ou número de elementos removidos
Limpa um elemento em uma posição especificada, um elemento em um intervalo especificado por um iterador ou um valor por uma chave
lugar()
par chave-valor
Inserir elemento. Quando a inserção é bem-sucedida, o primeiro elemento é um iterador apontando para o elemento recém-inserido. Quando falha, o primeiro elemento é um iterador apontando para o elemento existente e o segundo elemento representa o resultado da inserção. True é bem-sucedido e false falha .
emplace_hint()
iterador
O iterador do elemento recém-inserido é retornado se a inserção for bem-sucedida e o iterador do elemento existente é retornado quando a inserção falha
inserir()
par chave-valor, iterador, Nenhum
1) Insira um elemento na posição especificada. 2) Copia os elementos no intervalo especificado pelo iterador. 3) Insira elementos através da lista de inicializadores. 4) Insira elementos diretamente.
/*直接构造并插入元素*/
std::pair<std::unordered_set<int>::iterator,bool> pair1 = unordersetTest.emplace(6);
std::cout <<"emplace result is "<<std::boolalpha<<pair1.second<<std::endl;
std::cout <<"pair1 iterator value is "<<*pair1.first<<std::endl;/*使用移动语句插入元素*/int iValue =8;
std::pair<std::unordered_set<int>::iterator,bool> pair3 = unordersetTest.emplace(std::move(iValue));
std::cout <<"emplace result is "<<std::boolalpha<<pair3.second<<std::endl;
std::cout <<"pair3 iterator value is "<<*pair3.first<<std::endl;/*直接构造并在指定位置插入元素*/
std::unordered_set<int>::iterator itr1 = unordersetTest.emplace_hint(++unordersetTest.begin(),1);
std::cout <<"itr1 value is "<<*itr1;/*删除单个元素*/
std::unordered_set<int>::iterator itr2 = unordersetTest.erase(unordersetTest.begin());
std::cout <<"itr2 alue is "<<*itr2<<std::endl;/*删除指定范围的元素*/
std::unordered_set<int>::iterator itr3 = unordersetTest.erase(unordersetTest.begin(),++unordersetTest.begin());
std::cout <<"itr3 value is "<<*itr3<<std::endl;/*根据键值删除元素*/int iCount = unorderset1.erase(1);
std::cout <<"erace element count is "<<iCount<<std::endl;/*清空元素*/
unordersetTest.clear();/*插入元素,返回键值对*/
std::pair<std::unordered_set<int>::iterator,bool> pair4 = unordersetTest.insert(3);
std::cout <<"insert result is "<<std::boolalpha<<pair4.second<<std::endl;
std::cout <<"pair4 iterator value is "<<*pair4.first<<std::endl;/*使用移动语句插入元素,返回键值对*/int iValue2 =7;
std::pair<std::unordered_set<int>::iterator,int> pair6 = unordersetTest.insert(std::move(iValue2));
std::cout <<"insert result is "<<std::boolalpha<<pair6.second<<std::endl;
std::cout <<"pair6 iterator value is "<<*pair6.first<<std::endl;/*插入元素,返回迭代器*/
std::unordered_set<int>::iterator itr4 = unordersetTest.insert(unordersetTest.begin(),9);
std::cout <<"insert value is "<<*itr4<<std::endl;/*使用移动语句插入元素,返回迭代器*/int iValue1 =2;
std::unordered_set<int>::iterator itr5 = unordersetTest.insert(unordersetTest.begin(),std::move(iValue1));
std::cout <<"insert value is "<<*itr5<<std::endl;/*初始化列表插入,无返回值*/
unordersetTest.insert({
5,7,6});/*使用迭代器指定范围插入元素,无返回值*/
std::unordered_set<int>unorderset9({
11,12});
unordersetTest.insert(unorderset9.begin(),unorderset9.end());
pesquisa de elemento
função
valor de retorno
Função
contar()
padrão::tamanho_t
Retorna o número de elementos correspondentes a uma determinada chave
encontrar()
iterador
Encontre a posição do elemento correspondente à chave especificada, se não for encontrado, retorne end()
intervalo_igual()
par chave-valor
Obtenha o intervalo que corresponde ao elemento fornecido. Se não existir, o par chave-valor é end()
/*判断某个键对应值的数量*/
std::cout<<unordersetTest.count(3)<<std::endl;/*查找指定键的元素所在的位置*/
std::unordered_set<int>::iterator itr6 = unordersetTest.find(4);
std::cout<<"find value is "<<*itr6<<std::endl;/*返回给定键的范围*/
std::pair<std::unordered_set<int>::iterator,std::unordered_set<int>::iterator> ret7 = unorderset1.equal_range(1);if(unorderset1.end()!= ret7.first){
std::cout<<"first value is "<<*ret7.first<<std::endl;}if(unorderset1.end()!= ret7.second){
std::cout<<"second value is "<<*ret7.second<<std::endl;}
tamanho do recipiente
função
valor de retorno
Função
tamanho()
padrão::tamanho_t
Obtenha o número de elementos no contêiner atual
vazio()
bool
Determine se o contêiner atual está vazio, retorne true se estiver vazio, caso contrário, retorne false