Funções de conjunto C ++

Funções de conjunto C ++
“Podemos empregar numerosos recursos e ferramentas benéficos do C ++ para ajudar na programação dinâmica. Uma dessas partes é um conjunto encontrado na biblioteca de modelos padrão, que oferece um mecanismo para armazenar efetivamente dados de maneira organizada. Neste tutorial do conjunto C ++, falaremos sobre todos os básicos das funções do conjunto de C ++.

As estruturas do C ++ STL para manter itens em uma ordem específica são chamadas de conjuntos. Um conjunto deve ter componentes únicos. Cada item em um conjunto pode ser identificado por seu valor individualmente, para que eles sirvam como chaves. Em C ++, podemos adicionar e excluir itens de um conjunto; No entanto, não podemos alterar os valores dos componentes porque eles são estáticos após serem colocados no conjunto.”

Definição de conjunto em C++

Como já está afirmado, os conjuntos são exatamente o tipo de recipiente de biblioteca de modelos padrão utilizado em C ++ para armazenar itens com precisão. Os conjuntos só podem ser submetidos aos métodos de inserção e exclusão. Em um objeto de tipo definido, os itens são organizados automaticamente em um pedido especificado. Não podemos alterar ou atualizar os valores dos componentes já existentes em um conjunto, porque os itens em contêineres são imutáveis. Ao defini -lo precisamente, um item em um conjunto serve como uma chave para si. Os conjuntos só podem conter um valor específico.

Quando utilizar conjuntos?

Na programação competitiva, os conjuntos são amplamente empregados como contêineres. Quando é necessário armazenar itens de maneira categorizada, podemos considerar a utilização de conjuntos, mas lembre -se de que os conjuntos não permitem o armazenamento de valores repetidos. Uma vez que ele foi inserido, o valor não pode ser alterado.

Implementando os conjuntos

Para interagir com os conjuntos, os 2 arquivos principais de cabeçalho devem ser integrados. Conjuntos são acessados ​​utilizando iteradores. Integrar #include e #include em seu código. Temos a opção de usar apenas este arquivo de cabeçalho em vez desses dois. A biblioteca serve como substituto dos arquivos de cabeçalho acima mencionados. Só podemos empregar este arquivo de cabeçalho apenas porque ele incorpora todos os arquivos do cabeçalho. Árvores de busca binária estão sendo usadas para definir conjuntos em nível interno.

Defina características em C++

A seguir, alguns dos atributos de conjunto comum em C ++:

  • A característica da singularidade: em C ++, cada membro de um conjunto deve ser distinto; Itens repetidos não são aceitos. Como resultado, os conjuntos em C ++ não suportam repetição.
  • A característica de ser organizada: os componentes de um recipiente de conjunto são geralmente salvos de maneira organizada.
  • A capacidade de ser imutável: uma vez que os itens são salvos em um conjunto, eles não podem ser modificados. Como resultado, enquanto a adição e a remoção são permitidas, não é necessário atualizar ou modificar os componentes existentes do conjunto.
  • O atributo da execução interna: um BST está sendo usado para criar logicamente um conjunto em c++.
  • O recurso da indexação: como a biblioteca de modelos padrão C ++ não fornecerá indexação, os conjuntos em C ++ também têm o recurso de não ser indexado.

Sintaxe do conjunto

A seguir, é apresentado a declaração STD :: Definir da biblioteca "set":

Parâmetros

  • Chave: Tipo do componente representado na chave. Qualquer outra estrutura de dados, como um tipo definida pelo usuário, pode ser utilizada no lugar da chave.
  • Alocadores: esses serão os objetos responsáveis ​​pela incorporação de administração de armazenamento. Sempre que queremos segregar a alocação e executar a criação em 2 fases, temos que utilizar o DST :: alocador. Quando a eliminação seqüencial e a memória dinâmica são realizadas em 2 fases, ela também é empregada. O valor de retorno para o alocador de argumentos de tipo em todos os contêineres é std :: alocador. Os operadores novos e apagados são tudo o que o alocador básico emprega para adquirir e aliviar o armazenamento.
  • Comparar: Um atributo binário com dois parâmetros com um tipo semelhante aos dos componentes e um valor de retorno bool. Se for considerado um item antes que a chave no sequenciamento da função defina, a declaração comp (x, y), onde o comp ser um objeto desse tipo e x e y são valores -chave, deve, portanto, gerar verdadeiro. Esta afirmação é usada pelo objeto Set para avaliar o arranjo dos componentes dentro do recipiente, bem como se duas chaves de itens são iguais (comparando instintivamente! comp (x, y) &&!comp (y, x)).

Um recipiente definido pode conter componentes exclusivos. Este pode ser um objeto de função ou um ponteiro de função. Menos é o valor padrão e fornece os mesmos resultados que o uso da expressão menos do que

Funções em conjuntos

Em C ++, os conjuntos podem ser submetidos a uma ampla variedade de operações. Vamos avaliar algumas das técnicas principais do conjunto.

  • BEGIN () Função: Um iterador apontando para o primeiro item do conjunto é retornado por esta função.
  • Função final (): Este método fornece um iterador apontando para o ponto adjacente ao último item do conjunto na abordagem teórica.
  • Função vazia (): é utilizado para determinar se o conjunto está ou não em branco.
  • Método (): fornece o número total de itens em um conjunto.
  • Função max_size (): Recupera o limite superior dos itens de um conjunto ou o valor mais alto que um conjunto pode acomodar.
  • RBegin (): esta função, em contraste em iniciar (), fornece um iterador reverso que aponta para o valor final de um conjunto.
  • Rend (): diferente da função end (), fornece um iterador revertido que aponta para o local logicamente antes do último valor de um conjunto.
  • EASE () Função: Quando usado em um conjunto, elimina o item no local indicado pelo ponteiro especificado no parâmetro.
  • Apagar (const_n): Este método remove imediatamente o valor "n" de um conjunto quando é fornecido como um argumento.
  • Inserir (const n): este método adiciona um novo membro, "n", ao conjunto.
  • Encontre (n): encontra o conjunto para o item definido e fornece um iterador referente à localização do componente que foi identificado. Produz um iterador apontando para o final do item que não pode ser recuperado.
  • Contagem (const n): Esta função conta o número de vezes que o valor fornecido "n" aparece e fornece 0 ou 1, dependendo se o item foi recuperado ou não.
  • Função clear (): elimina todos os itens de um conjunto.

Exemplo nº 1

Nesse caso, um conjunto será inicializado. Em C ++, especificamos os diferentes tipos de itens que serão colocados em um conjunto quando for criado. Os pontos de dados de um conjunto são normalmente armazenados em ordem crescente. A maior função pode ser usada para manter os dados em ordem decrescente. Conjunto em branco

  • Usando valores
  • Usando uma matriz.
  • Usando outro conjunto.

Essas são numerosas técnicas para declarar um conjunto.

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

SETS1;
definirs2;
definir s3 = 62, 17, 25, 81;
definir S4 (S3);
int ar [] = 15, 24, 75, 51;
SET S5 (AR, AR+4);
set :: iterator i;
para (Auto I = S5.começar(); eu!= S5.end (); i ++)

cout<
retornar 1;

Os arquivos do cabeçalho e seriam integrados primeiro. Depois disso, o espaço para nome padrão será utilizado. A função principal () será chamada. O primeiro conjunto será inicializado e será um conjunto vazio, pois não contém nenhum elemento. O segundo conjunto será declarado como um conjunto vazio em ordem decrescente. O novo conjunto será inicializado adicionando diferentes números inteiros a ele. Este conjunto contém quatro elementos.

Além disso, inicializaremos um novo conjunto chamado "S4" pelo uso de outro conjunto, "S3". Fornecemos os valores do S3 como os parâmetros do S4. Agora o conjunto será declarado de uma matriz. Especificamos os valores na matriz e depois salvamos esses valores em uma variável "a". O quinto conjunto contém os 4 valores da matriz. Em seguida, definiremos o iterador para esses conjuntos necessários. Adquiriríamos os valores de todos os conjuntos pelo uso do loop "for".

Exemplo nº 2

Esta ilustração demonstra como os métodos de inserção e exclusão do conjunto funcionam.

#incluir
usando namespace std;
int main ()

set s1;
S1.inserir (22);
S1.inserir (33);
S1.inserir (56);
S1.inserir (9);
S1.inserir (67);
S1.inserir (47);
S1.inserir (88);
set :: iterator p_1, p_2, p_3;
cout<< " The values of the set are: \n" ;
para (p_1 = s1.começar() ; p_1 != S1.fim() ; p_1 ++)

cout<< *p_1 << " " ;

cout<definir S2 (S1.BEGIN (), S1.fim() );
definir :: iterator i;
P_2 = S1.encontre (22);
P_3 = S1.encontre (88);
S1.apagar (p_2, p_3);
cout<< " The values of the set after using erase() function: \n " ;
para (p_1 = s1.começar() ; p_1 != S1.fim() ; p_1 ++)

cout<< *p_1 << " ";

cout<cout<< " The values of second set are: \n" ;
para (i = s2.começar() ; eu != S2.fim() ; i ++)

cout<< *i<< " ";

retornar 0;

As bibliotecas necessárias serão incluídas no início do programa. O espaço para nome padrão será adicionado como "std". Agora o método principal () será invocado. Vamos declarar conjuntos diferentes. Chamaríamos o método insert () para adicionar os valores ao conjunto. Diferentes ponteiros serão criados e nomeados "P_1", "P_2" e "P_3". O iterador será declarado como esses ponteiros. A declaração "cout" será usada para representar a linha "os valores do conjunto são". Agora o loop "for" será utilizado para mostrar todos os valores inseridos do conjunto.

O começo () seria chamado para iniciar os valores do conjunto para serem impressos, e os métodos end () seriam aplicados para encerrar os valores do conjunto. Esses métodos serão invocados dentro do loop "for". O construtor do primeiro ponteiro será definido na declaração "cout". Agora faremos outro conjunto organizando os valores em ordem decrescente. Os itens dos primeiros e segundos conjuntos necessários são os mesmos.

A função find () seria chamada nos itens do primeiro conjunto definido. Esta função recebe os valores definidos do conjunto. Agora aplicaríamos o método EASE () para excluir os valores do primeiro conjunto. Os valores que serão excluídos são de 22 a 88. A declaração "cout" será usada para mostrar o texto "Os valores do conjunto após o uso da função EASE ()". Para mostrar os valores, o loop "for" será utilizado.

Então o construtor do primeiro ponteiro será declarado. Agora, utilizamos o loop "for" para imprimir os itens do segundo conjunto necessário. A declaração "cout" imprime a linha "Os valores do segundo conjunto são". Antes de adicionar o comando "retornar 0", o construtor da variável iteradora será criado.

Exemplo no 3

Neste exemplo, duas funções, encontradas () e apagar, serão usadas. Se o item for identificado, o método find () produzirá um iterador referindo -se a ele; Caso contrário, ele fornece um iterador referente ao final do set. Os itens no conjunto removerão com a ajuda da função EASE ().

#incluir
usando namespace std;
int main ()

Sets_1;
S_1.inserir (45);
S_1.inserir (12);
S_1.inserir (17);
S_1.inserir (89);
S_1.inserir (25);
S_1.inserir (14);
S_1.inserir (78);
S_1.inserir (34);
set :: iterator i;
cout<<"Values of required set: \n";
para (i = s_1.começar() ; eu != S_1.fim() ; i ++)

cout<<*i<< " ";

cout<cout<< " Updated set \n " ;
S_1.Apagar (S_1.BEGIN (), S_1.encontre (25));
para (i = s_1.começar() ; eu!= S_1.fim() ; i ++)
cout<< *i<< " " ;
cout<cout<< " lower bound of 45 is: \n" ;
cout<< *s_1.lower_bound( 45 )<cout<< " lower bound of 17 is: \n" ;
cout<< *s_1.lower_bound( 17 ) <cout<< " upper bound of 45 is: \n" ;
cout<< *s_1.upper_bound( 45 ) <cout<< "upper bound of 17 is: \n" ;
cout<< *s_1.upper_bound( 17 ) <retornar 0;

O programa incluirá as bibliotecas relevantes no início chamadas . O espaço para nome padrão como "std" será introduzido. Uma referência à função principal () agora será feita. Especifique o conjunto primeiro. Para incluir os valores no conjunto, usaríamos a função insert (). O iterador será identificado como "eu"; Os valores do conjunto apropriado serão exibidos usando o comando "cout". O loop "for" agora será usado para exibir todos os valores inseridos do conjunto.

A função BEGIN () seria usada para começar a imprimir os valores do conjunto, e o método END () seria usado para terminar de imprimir os valores do conjunto. Esses métodos definidos seriam empregados dentro do loop "for". A declaração "cout" declarará o construtor do iterador. O texto "conjunto atualizado" será exibido usando a instrução Cout. Os componentes do primeiro conjunto seriam determinados utilizando a função find (). Os valores definidos são obtidos por esta função do conjunto.

Para remover os valores do primeiro conjunto, agora utilizaremos o método EASE (). Até 25 valores serão eliminados. Usando um loop "for", os números inteiros restantes serão apresentados. A declaração "cout" fornecerá uma declaração do construtor do iterador. Operações de limite inferior e limite superior nos valores do conjunto serão realizadas. Os valores 45 e 17 do conjunto seriam fornecidos à função Limite inferior (), que usaria o comando "cout" para imprimir o resultado. Esses valores semelhantes no conjunto serão tratados com um método de limite superior (). O valor do resultado será impresso pelo comando "cout". O comando "retornar 0" será adicionado no final.

Conclusão

Discutimos funções do conjunto de C ++ neste guia. Semelhante a outros pacotes de bibliotecas padrão, o conjunto C ++ é crucial. Torna mais fácil para os desenvolvedores extrair e manipular valores. Nós implementamos três programas. Inicializar os conjuntos é tratado no primeiro exemplo. O segundo exibe as adições e remoções dos valores do conjunto. Na instância final, escolhemos alguns valores do conjunto e depois os removemos.