Funções definidas não ordenadas C ++

Funções definidas não ordenadas C ++
Um conjunto é utilizado na linguagem de programação C ++ para manter os valores distintos de uma lista e ordenar dinamicamente seus itens. Por padrão, os elementos da lista são organizados em ordem crescente.

Uma tabela de hash é usada para construir um conjunto não ordenado, onde os valores são convertidos em índices de tabela de hash para garantir que a inserção de um valor seja sempre atribuída aleatoriamente. O fato é que eles operam bem o suficiente e normalmente dão uma operação de pesquisa de tempo constante. Todas as funções no conjunto não ordenado geralmente requerem um tempo constante o (1). Embora, na pior situação, eles possam levar o tempo linear O (n) com base no algoritmo de hash operacional.

O conjunto não ordenado pode incluir chaves de qualquer tipo, sejam elas predefinidas ou de dados de dados definidos pelo usuário. Mas sempre que declaramos as chaves das estruturas de dados definidas pelo usuário, devemos, portanto, indicar o método de comparação que é usado para comparar as chaves.

Diferença entre conjunto e conjunto não ordenado

Um conjunto é uma coleção ordenada de chaves distintas. Mas um conjunto não ordenado é uma coleção de chaves que podem ser organizadas em qualquer sequência. A implementação do conjunto como uma estrutura de árvore equilibrada torna possível manter a ordem dos componentes. As operações definidas têm uma complexidade do tempo O (log n), mas um conjunto não ordenado tem um O (1). Numerosos métodos são definidos para o conjunto não ordenado. Mas os mais populares são o tamanho e o método vazio para armazenamento, encontrar o valor da chave e inserir e remover para configuração. Somente as teclas distintas são suportadas pelo conjunto não ordenado; Para chaves duplicadas, um multiset não ordenado pode ser empregado.

Funções usadas para conjuntos não ordenados

O conjunto não ordenado possui os seguintes métodos:

  • Insert (): esta função adiciona um novo item ao contêiner.
  • Função end (): retorna um iterador que aponta para o item após o final.
  • Função count (): conta o número de vezes que um elemento específico aparece em um conjunto não ordenado.
  • Método Find (): encontra um componente no conjunto.
  • Função clear (): esvazia um conjunto não ordenado removendo todos os seus componentes.
  • Função cbegin (): retorna um iterador constante correspondente ao primeiro membro no conjunto não ordenado.
  • Função CEND (): retorna um iterador constante com o último valor no conjunto não ordenado.
  • bucket_size (): Em um conjunto não ordenado, essa função retorna a contagem total de itens que estão presentes em um determinado balde.
  • EASE () Função: ele exclui do início ao fim, seja apenas um componente ou uma coleção de itens.
  • Tamanho () Função: fornece a contagem de itens do conjunto não ordenado.
  • Swap () Função: Permite trocar os dados de dois conjuntos não ordenados.
  • Função emplace (): adiciona um item usando esta função a um conjunto não ordenado.
  • Max_size (): Esta função retorna mais itens que um conjunto não ordenado é capaz de segurar.
  • Método vazio (): ele verifica se um conjunto não ordenado está vazio.
  • Intervalo igual: ele retorna um intervalo com todos os itens com o valor predeterminado como seu valor.
  • Hash Method (): Este é um método unário que aceita apenas um parâmetro e constrói seu valor de retorno em um valor singular size_t.
  • Reserve () Função: É utilizado para exigir a capacidade de um conjunto não ordenado ser alterado.
  • Função de bucket (): retorna o número do balde do item.
  • Função bucket_count (): o número geral de baldes de um conjunto não ordenado é retornado por este método.
  • Load_actor (): retorna o fator de capacidade que é frequentemente empregado para o conjunto não ordenado.
  • Função Rehash (): aumenta a faixa de baldes no conjunto não ordenado para o número definido ou maior.
  • Max_load_factor (): retorna o índice de capacidade de carga final que o conjunto não ordenado pode suportar.
  • Função emplace_hint (): com o uso de uma dica, ele adiciona apenas um novo item a um conjunto não ordenado se o valor adicionado for distinto.
  • Função key_eq (): fornece um valor booleano com base na comparação.

A execução de diferentes funções não ordenadas na linguagem C ++ é abordada neste artigo.

Exemplo 1:

O tempo médio de processamento para as funções find (), insert () e ease () é constante. Se a chave não estiver presente no conjunto definido, o método find () fornecerá um iterador à função final (); caso contrário, ele retorna um iterador ao atributo chave. Para adquirir a chave referenciando os valores -chave com o operador *, o iterador atua como um ponteiro para os principais atributos. A seguir, é apresentada uma instância de uma declaração para as funções de find (), insert () e iteração em um conjunto não ordenado.

#incluir
usando namespace std;
int main ()

não ordenado_setstrings;
cordas.inserir ("i");
cordas.inserir ("amor");
cordas.inserir ("para");
cordas.inserir ("play");
cordas.inserir ("badminton");
string key = "como";
If (Strings.encontre (chave) == Strings.fim())
cout<< key << " to explore " <outro
cout<< "explore " << key <key = "badminton";
If (Strings.encontre (chave) == Strings.fim())
cout<< key << " to explore\n" ;
outro
cout<< "explore " << key <cout<< "\nAll required elements : ";
não -ordered_set :: iterator i;
para (i = strings.começar(); eu != Strings.fim(); i ++)
cout<< (*i) <

Incorporamos o arquivo de cabeçalho no início deste código. Em seguida, entramos no espaço de nome padrão como std. Em seguida, invocamos a função principal (). Dentro desta função, declaramos o conjunto não ordenado. Aqui, usamos um conjunto não ordenado para organizar os elementos dos conjuntos. Passamos a string como o parâmetro da função de conjunto não ordenada. Em seguida, inserimos as diferentes cordas nos conjuntos. Passamos as numerosas cordas como os argumentos da função insert (). Em seguida, especificamos o valor da chave usando a palavra -chave "chave". O método find () é usado na próxima etapa. Esta função é aplicada para encontrar a sequência necessária do conjunto.

Utilizamos o método end () para encerrar as strings. Esta função retorna o iterador sempre que a chave não existe no conjunto. O comando "cout" é aplicado para imprimir a declaração. Então, inicializamos novamente um valor para o atributo "chave". Encontramos o valor de um atributo na string usando a função find () e encerrar a string com a ajuda do método final (). Aplicamos a declaração "cout" para mostrar o resultado. Iteramos por todo o conjunto e imprimimos o conteúdo do conjunto usando a instrução "cout". Usamos o método de conjunto não ordenado e também declaramos o iterador como "eu". O loop "for" é empregado.

Primeiro, inicializamos uma variável e depois utilizamos a função Begin () para iniciar a string especificada. Além disso, definimos a condição do loop. A função final () é chamada. O valor do iterador é incrementado por 1. No final, a declaração "cout" é usada para mostrar o valor do iterador.

Exemplo 2:

Nesse caso, executaremos um código no qual declaramos uma lista de valores diferentes e, em seguida, encontramos todas as duplicatas dessa lista pelo uso da função de conjunto não ordenado.

#incluir
usando namespace std;
void printDUplicates (int a [], int b)

não -ordered_setIntSet;
não -ordered_setDuplicate;
for (int j = 0; j < b; j++)

if (Intset.encontre (a [j]) == Intset.fim())
Intset.inserir (a [j]);
outro
duplicado.inserir (a [j]);

cout<< "The list of duplicated elements: ";
UNODERED_SET :: iterator It;
para (it = duplicado.começar(); isto != duplicado.fim(); IT ++)
cout<< *it << " ";

int main ()

int a [] = 11, 30, 42, 21, 94, 35, 11, 77, 62, 89, 94, 35;
int b = sizeof (a) / sizeof (int);
printDUplicates (a, b);
retornar 0;

Aqui, incluímos a biblioteca. Na próxima etapa, utilizamos o espaço de nome padrão como std. Usamos o método print () para mostrar a replicação na matriz definida pelo uso de um conjunto não ordenado. Fornecemos uma matriz e uma variável para atingir o número inteiro como os argumentos do método printDUplicates ().

Agora, declaramos os conjuntos não ordenados para adquirir e salvar as duplicatas. A função de conjunto não ordenada é usada. Passamos o número inteiro como seu parâmetro. Em seguida, utilizamos outra função de conjunto não ordenada para encontrar os elementos duplicados. Aqui, aplicamos o loop "para". Declaramos uma variável do loop "for". Então, especificamos a condição. Em seguida, aumentamos o valor "j". Chamamos a função find () para encontrar o elemento definido na matriz. Passamos o elemento específico como o argumento desta função. Se o item necessário já estiver presente na matriz, inserimos esse item no conjunto duplicado.

Mostramos os valores duplicados da matriz usando a declaração "cout". Declaramos a variável "it" do iterador para o conjunto não ordenado. O loop "for" é aplicado. Então, os métodos iniciantes () e end () são usados ​​dentro do loop "for". Depois disso, chamamos a função principal (). Inicializamos uma variável "a". Em seguida, definimos os elementos para a matriz e essa matriz é armazenada em uma variável "a". Encontramos o tamanho da matriz necessária usando o método sizeof (). Passamos a matriz como o parâmetro desta função.

Dividimos o valor resultante pelo tamanho dos números inteiros. O valor que obtemos depois de dividir é armazenado em uma variável "B". Exibimos os valores duplicados da matriz com a ajuda do método printDuplicate (). No final, empregamos o comando "Return 0".

Exemplo 3:

Um item de dados pode ser adicionado ao recipiente de conjunto não ordenado usando a função da biblioteca de modelos padrão C ++ embutida - a função insert (). Cada item em um conjunto não ordenado tem um valor específico e é adicionado apenas se não estiver disponível no conjunto. Como o contêiner emprega vários métodos de hash, a inserção é realizada automaticamente no ponto em que atende ideal o requisito. Como resultado, o tamanho do contêiner é consideravelmente aprimorado pelo número de itens recuperados.

Parâmetros do método insert ():

  • Valor: define o valor que deve ser adicionado ao contêiner.
  • Primeiro, último: iteradores que fornecem uma variedade de componentes. Observe que o intervalo abrange todos os componentes entre o primeiro elemento e o último elemento, como o especificado pelo primeiro elemento, mas encerra o item apontado pelo último elemento.

O método retorna um par, tendo o par :: configurado pela primeira vez a um iterador referente ao novo item atualizado ou ao componente correspondente já presente no conjunto. Se um novo item de dados for adicionado, o segundo componente :: Segundo no par será ajustado como TRUE; Caso contrário, é especificado como falso se um item idêntico já estiver presente.

O programa a seguir demonstra a função acima mencionada:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

UNODERED_SET SET = "segunda -feira", "Terça -feira";
string str = "quarta -feira";
Definir.inserir (str);
cout<< "The set of week days is:"
<para (const string & m: set)
cout<< m
<< " ";

cout<retornar 0;

Primeiro de tudo, integramos os arquivos de cabeçalho necessários. O é responsável pelas funcionalidades de entrada e saída. O arquivo de cabeçalho contém a declaração das cordas. O terceiro mantém todos os conjuntos não ordenados. Utilizamos o espaço de nome padrão como std. Em seguida, começamos a codificação dentro do corpo da função principal () depois de chamar a função principal (). Utilizamos o conjunto não ordenado de strings.

Aqui, definimos os elementos do meu conjunto. Especificamos os dois dias da semana. Agora, indicamos o valor da string que queremos ser inseridos no conjunto necessário. Inserimos essa string usando o método insert (). A declaração "cout" é empregada para mostrar o texto "O conjunto de dias da semana é". Usamos a declaração "cout" mais uma vez antes de entrar no comando "Return 0". Esta declaração "cout" imprime todos os nomes dos dias da semana.

Conclusão

O uso das funções definidas C ++ não ordenadas é abordado neste artigo. Implementamos os vários códigos no software Devc ++, onde utilizamos muitas funções relacionadas aos conjuntos não ordenados. Conjuntos não ordenados são estruturas de dados que podem conter diferentes componentes em qualquer ordem e fornecer um acesso eficiente a itens específicos com base em seu valor. Em primeira instância, utilizamos as múltiplas funções definidas não ordenadas para examinar como o código funciona. Usando o método find (), identificamos um certo elemento no conjunto. Com a ajuda da função final (), terminamos o conjunto não ordenado. Na segunda ilustração, construímos uma matriz contendo vários números inteiros. Os valores repetidos e não repetidos estão incluídos na matriz. Para encontrar os valores duplicados na matriz especificada, aplicamos o método find (). O método insert () foi usado no último exemplo para agregar um valor ao conjunto não ordenado necessário.