Lag et STD -sett i C ++

Lag et STD -sett i C ++
Et sett i C ++ er veldig likt et sett i matematikk. Følgende er et sett med heltall:
-5, 6, 9, 8, -2

Følgende er et sett med karakterer:

'B', 'M', 'A', 'C', 'T', 'O', 'Q'

Følgende er et sett med strenger (elementer på et lesetabell):

"Reading Lamp", "Computer", "Pen", "Pencil", "Treningsbøker", "Text Books"

I C ++ kalles hver verdi i hvert av de ovennevnte settene en nøkkel.

I C ++ tillater ikke et sett dupliserte verdier. Imidlertid, fremdeles i C ++, tillater en multiset dupliserte verdier. Denne artikkelen adresserer settet, og adresserer ikke multisett.

STD betyr standard. Denne artikkelen handler om hvordan du lager et standardsett i C++. Å legge til elementer (verdier) i settet, er også nevnt.

Bibliotek

C ++ har ett hovedbibliotek, kalt C ++ standardbibliotek. Dette biblioteket har underbiblioteker som også er delt inn i ytterligere underbiblioteker som er delt videre i flere underbiblioteker. De nederste under-libraries kan sees på som moduler. Det første nivået under-biblioteket av interesse her kalles containerbiblioteket. Containere-biblioteket har en underbibliotek, kalt Associative Containers Library. Associative Containers-biblioteket har en under-bibliotek kalt Set Library. Dette settbiblioteket kan betraktes som en modul. For å kodesett, må det inkluderes i begynnelsen av programmet som følger:

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

iostream bør alltid inkluderes hvis terminalen (konsollen) skal brukes til utgang (og input). Den andre linjen i dette kodesegmentet inkluderer set -modulen. Den tredje linjen er en uttalelse som slutter med en semikolon, insisterer på bruken av standard navneområdet.

For å kompilere programmet, med G ++ 20 -kompilatoren for C ++ 20, bruk følgende kommando:

G ++ -STD = C ++ 2A filnavn.CPP -o filnavn

Kjør programmet med:

./filnavn

Forutsatt at den kompilerte filen er i brukeren (Home) Directory.

Konstruere et sett

Å konstruere eller lage et sett er hovedspørsmålet i denne artikkelen. Det er mange konstruktører for settet. Bare de mest brukte vil bli forklart her.

Konstruere et tomt sett

Følgende uttalelse vil konstruere et tomt sett:

sett st;

Det begynner med klassetypen. Dette blir fulgt av vinkelbraketter, som har typen for elementene (verdier). Det er et rom og deretter navnet på settet (ST).

Sette inn verdier

Elementer kan settes inn med innsettingsmetoden til SET -klassen, som følger:

sett st;
st.sett inn (-5); st.sett inn (6); st.sett inn (9);
st.sett inn (8); st.sett inn (-2);

Settet -5, 6, 9, 8, -2 er satt inn.

Returnerer en iterator

Set -klassen har ikke den firkantede operatøren, som matrisen. Så for å skanne elementene i settet, er det nødvendig med en iterator. Hvis navnet på settet er ST, vil følgende uttalelse returnere en iterator som peker på det første elementet i settet:

sett:: iterator iter = st.begynne();

Setter pris på syntaksen i denne uttalelsen.

Størrelse på settet

Følgende uttalelse returnerer størrelsen på et sett:

int sz = st.størrelse();

Variabelen, SZ, har størrelsen på settet.

Leseverdier av settet

Følgende program bruker iteratoren til å lese alle verdiene i settet:

sett st;
st.sett inn (-5); st.sett inn (6); st.sett inn (9);
st.sett inn (8); st.sett inn (-2);
for (sett:: iterator iter = st.begynne(); iter != ST.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

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

Legg merke til hvordan for-loop og iterator ble brukt. “ST.End () ”returnerer slutt iteratoren som peker rett etter det siste elementet.

Med strenger som elementer, må strengmodulen inkluderes med;

#inkludere

Tenk på følgende kode med strengelementer:

sett st;
st.Sett inn ("leselampe"); st.Sett inn ("datamaskin"); st.Sett inn ("penn");
st.sett inn ("blyant"); st.Sett inn ("treningsbøker"); st.Sett inn ("tekstbøker");
for (sett:: iterator iter = st.begynne(); iter != ST.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

datamaskin, treningsbøker, penn, blyant, leselampe, tekstbøker,

Merk at når verdiene legges til med INSERT () -kommandoen, sorteres settet internt.

Legg også merke til at strengklassen, for å bruke strenger, må inkluderes; Ellers er det pekerne på strengene som vil bli sortert og ikke streng alfabetiske litteraler selv.

sett (const set & x)
Dette er en fast konstruktør, som vil ta identifikatoren til et annet sett som argument, for å konstruere et nytt sett. Følgende kode illustrerer dette:

Sett ST;
st.sett inn (-5); st.sett inn (6); st.sett inn (9); st.sett inn (8); st.sett inn (-2);
sett ST2 (ST);
for (sett:: iterator iter = ST2.begynne(); iter != ST2.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

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

sett (initializer_list, const compare & = compare (), const allocator & = allocator ())

Dette er en konstruktør, der andre og tredje argumenter er valgfrie. Når de ikke er gitt, blir standardverdiene valgt av C++. Det første argumentet er en initializer_list (Array Literal). Følgende kode illustrerer bruken av konstruktøren:

sett st ('b', 'm', 'a', 'c', 't', 'o', 'q');
for (sett:: iterator iter = st.begynne(); iter != ST.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

A, B, C, M, O, Q, T,

Legg merke til at utgangen er sortert til tross for at inngangen er en usortert initializer_list.

Merk: Med initializer_listen kan parentesene til konstruktøranropet utelates, som i følgende kode:

sett st 'b', 'm', 'a', 'c', 't', 'o', 'q';
for (sett:: iterator iter = st.begynne(); iter != ST.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er fremdeles:

A, B, C, M, O, Q, T,

Kopier konstruktører

Et sett kan opprettes ved å tilordne identifikatoren til et annet sett til identifikatoren til det nye settet, eller ved å tilordne det bokstavelige settet (Array Literal) til identifikatoren til det nye settet.

sett & operatør = (const set & x)
Dette tildeler identifikatoren til et annet sett til identifikatoren til et nytt sett som vist, således:

sett st;
st.Sett inn ('B'); st.Sett inn ('m'); st.Sett inn ('A'); st.Sett inn ('C');
st.Sett inn ('t'); st.Sett inn ('o'); st.Sett inn ('q');
sett ST2 = ST;
for (sett:: iterator iter = ST2.begynne(); iter != ST2.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

A, B, C, M, O, Q, T,

sett & operatør = (initializer_list)
Dette tildeler det bokstavelige settet (Array Literal) til identifikatoren til et nytt sett som vist, således:

sett st = 'b', 'm', 'a', 'c', 't', 'o', 'q';
for (sett:: iterator iter = st.begynne(); iter != ST.slutt(); iter ++)
cout << *iter << ", ";
cout << endl;

Utgangen er:

A, B, C, M, O, Q, T,

Konklusjon

Settet bokstavelig i C ++ ligner matematikk. Et sett, som ikke er sortert, blir sortert, stigende, etter bygging (oppretting) med standardinnstillingene. STD betyr standard. De vanlige måtene å lage et sett er illustrert ovenfor.