Hvordan sette inn data i et C ++ -sett

Hvordan sette inn data i et C ++ -sett
Følgende er et sett med seks fargenavn:
"Gray", "White", "Aqua", "Black", "Fuchsia", "Blue"

Dette er et sett med strenger. Det er mulig i C ++ å ha et sett med heltall, et sett med flottører, et sett med dobler osv. Dette er også en matrise bokstavelig i C++. Det er også en initializer_list. Det er settet også, men ikke sortert.

For å ha et sett med ovennevnte strenger, bør C ++ -programmet begynne som følger:

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;

De tre første linjene er direktiver. Den siste linjen er en uttalelse. De tre første linjene inkluderer de nødvendige bibliotekene. Den siste linjen insisterer på bruken av standard navneområdet.

Set -klassen har mange innsett () overbelastede medlemsfunksjoner. Bare fire som er mest passende, vil bli forklart i denne artikkelen. De fire forklarte er for sett og ikke multisett.

Et sett er alltid sortert internt, stigende som standard. Hver gang en verdi settes inn, blir settet sortert på nytt.

void insert (initializer_list)

Denne medlemsfunksjonen tar som argument initializer_list, som er matrisen bokstavelig (samme som sett bokstavelig). Det kan sette inn verdier i et tomt sett også. Funksjonen returnerer tomrom. Følgende program viser medlemsfunksjonen i aksjon:

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

sett st;
st.Sett inn ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++)
cout << *it << ", ";

cout << endl;
retur 0;

Utgangen er:

Aqua, svart, blå, fuchsia, grå, hvit,

Merk at utgangen er i stigende rekkefølge av strenglitteraler. Hvis strengbiblioteket ikke er inkludert og const-char* brukes i stedet, er det pekerne som vil bli sortert og ikke strenglitteraler.

Set -klassen har en konstruktør som kan ta initializer_listen. I dette tilfellet vil det ikke være behov for innledende innsetting. Følgende kode illustrerer dette:

sett ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++)
cout << *it << ", ";

cout << endl;

Utgangen er fortsatt,

Aqua, svart, blå, fuchsia, grå, hvit,

for samme inngang; Utgangssortert stigende.

Mal tomalsinnstilling (InputIterator First, InputIterator sist)

Denne medlemsfunksjonen vil sette inn et område fra et annet sett. Området for det andre settet begynner fra der iteratoren først peker på, men bare ikke inkludert verdien som iteratoren sist peker på. Funksjonen returnerer tomrom. Følgende kode illustrerer dette:

sett ST2 ("Purple", "Navy", "Yellow", "Olive", "Teal", "Red", "Silver");
for (sett:: Iterator IT = ST2.begynne(); den != ST2.slutt(); det ++) cout << *it << ", "; cout << endl;
sett:: Iterator ITB2 = ST2.begynne(); sett:: Iterator ite2 = ST2.slutt();
itb2 ++; itb2 ++; ite2--; ite2--; ite2--;
sett ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;
st.Sett inn (ITB2, ITE2);
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;

Utgangen er:

Navy, oliven, lilla, rød, sølv, teal, gul,
Aqua, svart, blå, fuchsia, grå, hvit,
Aqua, svart, blå, fuchsia, grå, lilla, rød, hvit,

Det sorterte området (lilla, rød, sølv) fra settet ST2, uten "sølv" ble satt inn i settet ST. ST ble sortert automatisk for å ha den tredje linjen i utgangen.

iteratorinnsats (const_iterator posisjon, const value_type & x)

Det andre argumentet for denne medlemsfunksjonen er variabelen til en konstant peker-til-type (røye). Denne medlemsfunksjonen skal passe til strengpekeren i den posisjonen som er påpekt av iteratoren som er det første argumentet. Dette kommer sannsynligvis ikke til å fungere som dukket opp på grunn av sorteringen som skal finne sted etter innsetting. Medlemsfunksjonen returnerer en iterator som peker på det innsatte elementet. Følgende program illustrerer dette:

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

const char* str = "lilla";
sett ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;
sett:: const_iterator itb = st.begynne(); ITB ++; ITB ++;
sett:: iterator iter = st.Sett inn (ITB, STR);
cout << *iter << endl;
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;
retur 0;

Utgangen er:

Aqua, svart, blå, fuchsia, grå, hvit,
lilla
Aqua, svart, blå, fuchsia, grå, lilla, hvit,

Iterator Insert (const_iterator Position, Value_Type && x)

Denne medlemsfunksjonen er lik det ovennevnte, men det andre argumentet er faktisk verdien bokstavelig og ikke variabelen. Følgende program illustrerer dette:

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

sett ST ("Gray", "White", "Aqua", "Black", "Fuchsia", "Blue");
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;
sett:: const_iterator itb = st.begynne(); ITB ++; ITB ++;
sett:: iterator iter = st.Sett inn (ITB, "Purple");
cout << *iter << endl;
for (sett:: iterator it = ST.begynne(); den != ST.slutt(); det ++) cout << *it << ", "; cout << endl;
retur 0;

Utgangen er:

Aqua, svart, blå, fuchsia, grå, hvit,
lilla
Aqua, svart, blå, fuchsia, grå, lilla, hvit,

Konklusjon

Et sett i C ++ kan opprettes tomt. Hvis den er laget tom. I dette tilfellet må initializer_listen brukes som eneste argument til innsatsfunksjonen. Den tilsvarende overbelastede medlemsfunksjonen, returnerer tomrom.

Et sett er alltid sortert internt stigende som standard. Hver gang en verdi settes inn, blir settet sorteres automatisk. Det faste biblioteket må inkluderes for at settet skal kodes.

Det er tre andre ofte brukte settinnsatsmetoder () metoder. Den ene returnerer tomrom og de to andre returnerer en iterator som peker på elementet som er satt inn. Den som returnerer Void tar et område fra et annet sett og setter inn interessen. Rekkevidden er identifisert i syntaksen av iteratorene, først og siste. Sist er bare ikke inkludert i det innsatte området.

For de to andre medlemsfunksjonene setter den ene inn variabelen til en verdi og den andre setter inn den bokstavelige verdien i seg selv. Begge setter inn i noen tiltenkte stillinger. De tiltenkte stillingene kan ikke respekteres som sortering skjer etter innsetting.