Como inserir dados em um conjunto de C ++

Como inserir dados em um conjunto de C ++
A seguir, é apresentado um conjunto de seis nomes de cores:
"Gray", "White", "Aqua", "Black", "Fuchsia", "Blue"

Este é um conjunto de cordas. É possível em C ++ ter um conjunto de números inteiros, um conjunto de carros alegóricos, um conjunto de duplas, etc. Esta também é uma matriz literal em c++. É também um Initializer_list. É o conjunto literal também, embora não seja classificado.

Para ter um conjunto das cordas acima, o programa C ++ deve começar da seguinte maneira:

#incluir
#incluir
#incluir
usando namespace std;

As três primeiras linhas são diretivas. A última linha é uma declaração. As três primeiras linhas incluem as bibliotecas necessárias. A última linha insiste no uso do espaço de nome padrão.

A classe Set possui muitas funções de membro sobrecarregadas insert (). Apenas quatro mais apropriados serão explicados neste artigo. Os quatro explicados são para definido e não multiset.

Um conjunto é sempre classificado internamente, ascendendo por padrão. Sempre que um valor é inserido, o conjunto é recortado.

INSERT VOID (Initializer_list)

Esta função de membro toma como argumento o Initializer_list, que é a matriz literal (o mesmo que definido literal). Ele pode inserir valores em um conjunto vazio também. A função retorna vazios. O programa a seguir mostra a função de membro em ação:

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

definir ST;
st.inserir ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
para (definido:: iterator it = st.começar(); isto != st.fim(); It ++)
cout << *it << ", ";

cout << endl;
retornar 0;

A saída é:

aqua, preto, azul, fúcsia, cinza, branco,

Observe que a saída está em ordem crescente de literais de sequência. Se a biblioteca de string não estiver incluída e const-char* for usada, então são os ponteiros que seriam classificados e não os literais de cordas.

A classe Set possui um construtor que pode levar o Initializer_list. Nesse caso, não haverá necessidade de inserção inicial. O código a seguir ilustra o seguinte:

definir ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
para (definido:: iterator it = st.começar(); isto != st.fim(); It ++)
cout << *it << ", ";

cout << endl;

A saída ainda é,

aqua, preto, azul, fúcsia, cinza, branco,

Para a mesma entrada; Saída classificada ascendente.

Modelo void Insert (InputIterator Primeiro, InputIterator Último)

Esta função de membro inserirá um intervalo de outro conjunto. O alcance do outro conjunto começa de onde o iterador primeiro está apontando, mas simplesmente não incluir o valor que o iterador por último está apontando para. A função retorna vazios. O código a seguir ilustra o seguinte:

definir st2 ("roxo", "marinha", "amarelo", "azeitona", "teal", "vermelho", "prata");
para (definido:: iterator it = st2.começar(); isto != st2.fim(); it ++) cout << *it << ", "; cout << endl;
definir:: iterator itb2 = st2.começar(); definir:: iterator ite2 = st2.fim();
Itb2 ++; Itb2 ++; ITE2--; ITE2--; ITE2--;
definir ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;
st.inserir (ITB2, ITE2);
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;

A saída é:

Marinha, azeitona, roxa, vermelha, prata, cerceta, amarelo,
aqua, preto, azul, fúcsia, cinza, branco,
aqua, preto, azul, fúcsia, cinza, roxo, vermelho, branco,

A faixa classificada (roxa, vermelha, prata) do conjunto ST2, sem "prata" foi inserida no set st st. ST foi reortado automaticamente para ter a terceira linha da saída.

Iterator Insert (posição const_iterator, const value_type & x)

O segundo argumento desta função de membro é a variável de um ponteiro constante para o tipo (char). Esta função de membro deve se encaixar no ponteiro da string na posição apontada pelo iterador, que é o primeiro argumento. Provavelmente não vai funcionar como apareceu por causa da classificação que deve ocorrer após a inserção. A função de membro retorna um iterador que aponta para o elemento inserido. O programa a seguir ilustra o seguinte:

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

const char* str = "roxo";
definir ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;
definir:: const_iterator itb = st.começar(); ITB ++; ITB ++;
definir:: iterator iter = st.inserir (itb, str);
cout << *iter << endl;
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;
retornar 0;

A saída é:

aqua, preto, azul, fúcsia, cinza, branco,
roxo
aqua, preto, azul, fúcsia, cinza, roxo, branco,

Iterator Insert (posição const_iterator, value_type && x)

Esta função de membro é semelhante ao acima, mas o segundo argumento é realmente o valor literal e não a variável. O programa a seguir ilustra o seguinte:

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

definir ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;
definir:: const_iterator itb = st.começar(); ITB ++; ITB ++;
definir:: iterator iter = st.inserir (itb, "roxo");
cout << *iter << endl;
para (definido:: iterator it = st.começar(); isto != st.fim(); it ++) cout << *it << ", "; cout << endl;
retornar 0;

A saída é:

aqua, preto, azul, fúcsia, cinza, branco,
roxo
aqua, preto, azul, fúcsia, cinza, roxo, branco,

Conclusão

Um conjunto em C ++ pode ser criado vazio. Se for criado vazio, a função insert () pode ser usada para inserir os elementos iniciais do conjunto. Nesse caso, o inicializer_list deve ser usado como único argumento para a função de inserção. A função de membro sobrecarregada correspondente, retorna vazios.

Um conjunto é sempre classificado internamente ascendente por padrão. Sempre que um valor é inserido, o conjunto é reorganizado automaticamente. A biblioteca definida deve ser incluída para o conjunto ser codificado.

Existem outros três métodos de conjunto de set () comumente usados. Um retorna vazio e os outros dois retornam um iterador apontando para o elemento inserido. Aquele que retorna o vazio leva um intervalo de outro conjunto e insere no conjunto de interesse. O intervalo é identificado na sintaxe pelos iteradores, primeiro e último. O último simplesmente não está incluído no intervalo inserido.

Para as outras duas funções de membro, uma insere a variável de um valor e a outra insere o próprio valor literal. Ambos se inserem em algumas posições pretendidas. As posições pretendidas podem não ser respeitadas, pois a classificação ocorre após a inserção.