Crie uma DST definida em C ++

Crie uma DST definida em C ++
Um conjunto em C ++ é muito semelhante a um conjunto em matemática. A seguir, é apresentado um conjunto de números inteiros:
-5, 6, 9, 8, -2

A seguir, é apresentado um conjunto de caracteres:

'B', 'm', 'a', 'c', 't', 'o', 'q'

A seguir, é apresentado um conjunto de cordas (itens em uma tabela de leitura):

"Reading Lamp", "Computer", "Pen", "lápis", "Livros de exercícios", "Livros de texto"

Em C ++, cada valor em cada um dos conjuntos acima é chamado de chave.

Em C ++, um conjunto não permite valores duplicados. No entanto, ainda em C ++, um multiset permite valores duplicados. Este artigo aborda o conjunto e não aborda o multiset.

DST significa padrão. Este artigo é sobre como criar um conjunto padrão em C++. Adicionar elementos (valores) ao conjunto também é mencionado.

Biblioteca

C ++ tem uma biblioteca principal, chamada de biblioteca padrão C ++. Esta biblioteca possui sub -biblibliblibrantes que também são divididos em outras subiblibliblibrantes que são divididas ainda mais em subibliblibrancas. As sub-bibliotecas inferiores podem ser vistas como módulos. A sub-biblioteca de interesse de primeiro nível aqui é chamada de Biblioteca de Contêineres. A biblioteca de contêineres possui uma sub-biblioteca, chamada Biblioteca de Containers Associativos. A biblioteca de contêineres associativos tem uma sub-biblioteca chamada Biblioteca de Conjunto. Esta biblioteca de conjuntos pode ser considerada como um módulo. Para conjuntos de codificadores, ele deve ser incluído no início do programa da seguinte forma:

#incluir
#incluir
usando namespace std;

O iostream sempre deve ser incluído se o terminal (console) for usado para saída (e entrada). A segunda linha neste segmento de código inclui o módulo definido. A terceira linha é uma declaração que terminou com um semicolon, insiste no uso do espaço para nome padrão.

Para compilar o programa, com o compilador G ++ 20 para C ++ 20, use o seguinte comando:

g ++ -std = c ++ 2a nome de arquivo.CPP -O FileName

Execute o programa com:

./nome do arquivo

Supondo que o arquivo compilado esteja no diretório do usuário (Home).

Construindo um conjunto

Construir ou criar um conjunto é a questão principal deste artigo. Existem muitos construtores para o conjunto. Somente o mais comumente usado será explicado aqui.

Construindo um conjunto vazio

A declaração a seguir construirá um conjunto vazio:

definir ST;

Começa com o tipo de classe. Isto é seguido por suportes de ângulo, que tem o tipo de elementos (valores). Há um espaço e depois o nome do conjunto (ST).

Inserindo valores

Os elementos podem ser inseridos com o método insert () da classe Set, como segue:

definir ST;
st.inserir (-5); st.inserir (6); st.inserir (9);
st.inserir (8); st.inserir (-2);

O conjunto -5, 6, 9, 8, -2 foi inserido.

Retornando um iterador

A classe Set não possui o operador de colchetes, como a matriz. Então, para escanear os elementos do conjunto, é necessário um iterador. Se o nome do conjunto for ST, a seguinte declaração retornará um iterador que aponta para o primeiro elemento do conjunto:

definir:: iterator iter = st.começar();

Aprecie a sintaxe desta declaração.

Tamanho do conjunto

A declaração a seguir retorna o tamanho de um conjunto:

int sz = st.tamanho();

A variável, SZ, mantém o tamanho do conjunto.

Lendo valores do conjunto

O programa a seguir usa o iterador para ler todos os valores no conjunto:

definir ST;
st.inserir (-5); st.inserir (6); st.inserir (9);
st.inserir (8); st.inserir (-2);
para (definido:: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

-5, -2, 6, 8, 9,

Observe como o loop e o iterador foram usados. “ST.end () ”retorna o iterador final, que aponta logo após o último elemento.

Com strings como elementos, o módulo da string deve ser incluído;

#incluir

Considere o seguinte código com elementos da string:

definir ST;
st.inserir ("lâmpada de leitura"); st.inserir ("computador"); st.inserir ("caneta");
st.inserir ("lápis"); st.inserir ("livros de exercícios"); st.inserir ("livros de texto");
para (definido:: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

computador, livros de exercícios, caneta, lápis, lâmpada de leitura, livros de texto,

Observe que quando os valores são adicionados com o comando insert (), o conjunto é classificado internamente.

Observe também que, para usar strings, a classe String deve ser incluída; Caso contrário, são os ponteiros para as cordas que serão classificadas e não os próprios literais alfabéticos de cordas.

set (const set & x)
Este é um construtor definido, que levaria o identificador de outro conjunto como argumento, para construir um novo conjunto. O código a seguir ilustra o seguinte:

set st;
st.inserir (-5); st.inserir (6); st.inserir (9); st.inserir (8); st.inserir (-2);
definir ST2 (ST);
para (definido:: iterator iter = st2.começar(); iter != st2.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

-5, -2, 6, 8, 9,

set (Initializer_list, const compare & = compare (), const alocator & = alocator ())

Este é um construtor, onde o segundo e o terceiro argumentos são opcionais. Quando não é dado, os valores padrão são escolhidos por c++. O primeiro argumento é um inicializer_list (matriz literal). O código a seguir ilustra o uso do construtor:

definir st ('b', 'm', 'a', 'c', 't', 'o', 'q');
para (definido:: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

A, b, c, m, o, q, t,

Observe que a saída é classificada, apesar do fato de a entrada ser um Initializer_list não classificado.

Observação: Com o Initializer_list, os parênteses da chamada do construtor podem ser omitidos, como no código a seguir:

definir st 'b', 'm', 'a', 'c', 't', 'o', 'q';
para (definido:: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída ainda está:

A, b, c, m, o, q, t,

Copiar construtores

Um conjunto pode ser criado atribuindo o identificador de outro conjunto ao identificador do novo conjunto ou atribuindo o conjunto literal (matriz literal) ao identificador do novo conjunto.

conjunto e operador = (const set & x)
Isso atribui o identificador de outro conjunto ao identificador de um novo conjunto, como mostrado, assim:

definir ST;
st.inserir ('b'); st.inserir ('m'); st.inserir ('a'); st.inserir ('c');
st.inserir ('t'); st.inserir ('O'); st.inserir ('q');
definir st2 = st;
para (definido:: iterator iter = st2.começar(); iter != st2.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

A, b, c, m, o, q, t,

SET & Operator = (Initializer_list)
Isso atribui o conjunto literal (Literal da Array) ao identificador de um novo conjunto, como mostrado, assim:

definir st = 'b', 'm', 'a', 'c', 't', 'o', 'q';
para (definido:: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;

A saída é:

A, b, c, m, o, q, t,

Conclusão

O conjunto literal em C ++ é semelhante ao da matemática. Um conjunto, que não é classificado, fica classificado, ascendente, após a construção (criação) com as configurações padrão. DST significa padrão. As maneiras comuns de criar um conjunto foi ilustrada acima.