Maneiras de inicializar uma DST definida em C ++

Maneiras de inicializar uma DST definida em C ++
A seguir, a lista de cores do arco -íris:
"vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta"

Este é um exemplo de um conjunto literal em matemática, bem como em c++. Também é uma matriz literal. É um conjunto de cordas. Conjuntos de números inteiros, carros alegóricos, duplos, etc., também são possíveis.

DST significa padrão. Este artigo está em maneiras de inicializar um conjunto como código. Há uma classe definida em um módulo na biblioteca padrão C ++. Inicialização aqui, significa dar valores ao conjunto no momento da criação. Criar um conjunto é construir o conjunto.

Um conjunto pode ser construído com os valores iniciais. Um conjunto também pode ser construído vazio e, em seguida, os valores inseridos após a criação.

O módulo SET (sublibrary) deve ser incluído no programa antes que um objeto definido possa ser criado e inicializando -o ao mesmo tempo. Um programa C ++ que envolve conjuntos deve começar da seguinte forma:

#incluir
#incluir
usando namespace std;

A primeira linha neste segmento de código inclui a biblioteca iostream (sub). Se a saída (e a entrada) for para o terminal (console), a biblioteca iostream deve ser incluída. A segunda linha inclui a biblioteca (sub) definida; isso é um dever. A terceira linha não é uma diretiva; é uma declaração. Ele insiste que qualquer nome usado sem precedeu com um nome de namespace de usuário é do espaço de nome padrão C ++.

O restante deste artigo explica diferentes maneiras de inicializar o conjunto durante a construção com os diferentes métodos de construção. No final do artigo, adicionar valores (inserindo) ao conjunto vazio é abordado.

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

Este é um construtor para criar um conjunto. Seu primeiro argumento é o conjunto inicializer_list. O Initializer_list é o conjunto literal. É o mesmo que a matriz literal. Se o segundo e o terceiro argumentos não forem digitados, seus argumentos padrão serão empregados. O programa a seguir mostra esse construtor em ação com sua inicialização:

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

set st ("vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta");
para (set :: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

azul, verde, índigo, laranja, vermelho, violeta, amarelo,

Observe que a saída é classificada em ordem ascendente, enquanto a entrada (primeiro argumento) não foi classificada.

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 & Operator = (Initializer_list)

Esta é a forma do construtor de cópias do construtor acima. Ainda faz inicialização. O programa a seguir mostra esse construtor em ação com sua inicialização:

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

definir st = "vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta";
para (set :: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

azul, verde, índigo, laranja, vermelho, violeta, amarelo,

Observe que a saída é classificada em ordem ascendente, enquanto a entrada (primeiro argumento) não foi classificada.

set (const set & x)

Este construtor cria um segundo conjunto usando o identificador de um conjunto anterior como argumento. Imediatamente após a criação, há duas cópias do mesmo conteúdo. O programa a seguir mostra esse construtor em ação com sua inicialização:

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

definir st = "vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta";
definir st2 (st); // inicialização
para (set :: iterator iter = st2.começar(); iter != st2.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

azul, verde, índigo, laranja, vermelho, violeta, amarelo,

Observe que a saída é classificada em ordem ascendente, enquanto a entrada (primeiro argumento) não foi classificada.

conjunto e operador = (const set & x)

Este é um construtor de cópia real. Ainda faz inicialização. O programa a seguir mostra esse construtor em ação com sua inicialização:

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

definir st = "vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta";
set st2 = st; // inicialização
para (set :: iterator iter = st2.começar(); iter != st2.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

azul, verde, índigo, laranja, vermelho, violeta, amarelo,

Observe que a saída é classificada em ordem ascendente, enquanto a entrada (primeiro argumento) não foi classificada.

Conjunto de modelos (InputIterator Primeiro, InputIterator Último, const compare & comp = compare (), const alocator & = alocator ());

Este construtor criará um novo conjunto copiando uma variedade de valores de outro conjunto. O intervalo começa com o valor apontado para primeiro e para, mas não incluindo o valor apontado pelo último. Se os outros argumentos para o construtor não forem digitados, seus argumentos padrão serão empregados. O argumento do modelo é a classe Iterator. O programa a seguir mostra esse construtor em ação com sua inicialização:

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

definir st = "vermelho", "laranja", "amarelo", "verde", "azul", "índigo", "violeta";
set :: iterator iterf = st.começar(); iterf ++;
set :: iterator iterl = st.fim(); iterl--;
definir st2 (iterf, iterl); // inicialização
para (set :: iterator iter = st2.começar(); iter != st2.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

verde, índigo, laranja, vermelho, violeta,

o que não é exatamente o que poderia ser esperado. O motivo é o seguinte:

A entrada é:

"Vermelho", "Orange", "Amarelo", "Verde", "Azul", "Indigo", "Violet"

Então, poderia -se esperar que "vermelho" e "violeta" fosse omitido. Em vez disso, era "azul" e "amarelo" que foram omitidos. Agora, quando um conjunto não ordenado é inserido em um conjunto, ele fica classificado. Na lista classificada, os valores nas extremidades extremas foram omitidas.

Conjunto vazio e inserção ()

O programa a seguir cria um conjunto vazio antes que os valores sejam inseridos:

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

set st;
st.inserir ("vermelho"); st.inserir ("laranja"); st.inserir ("amarelo"); st.inserir ("verde");
st.inserir ("azul"); st.inserir ("índigo"); st.inserir ("violeta");
para (set :: iterator iter = st.começar(); iter != st.fim(); iter ++)
cout << *iter << ", ";
cout << endl;
retornar 0;

A saída é:

azul, verde, índigo, laranja, vermelho, violeta, amarelo,

Observe que a saída é classificada em ordem ascendente, enquanto a entrada (primeiro argumento) não foi classificada.

Conclusão

A inicialização é quando os valores são adicionados à medida que o conjunto é criado. Após esta fase, os valores ficam classificados ascendendo com configurações padrão. As maneiras comuns de inicializar um conjunto no C ++ envolvem construção convencional e construção de cópias. Eles foram explicados acima.

Chrys