logo

Asetettu C++ Standard Template Libraryssa (STL)

Joukot ovat assosiatiivisia säilöjä, joissa jokaisen elementin on oltava yksilöllinen, koska elementin arvo tunnistaa sen. Arvot tallennetaan tietyssä lajittelujärjestyksessä, eli joko nousevassa tai laskevassa järjestyksessä.

The std::set luokka on osa C++ Standard Template Library (STL) -kirjastoa ja se on määritetty sisällä otsikkotiedosto.



Syntaksi:

yksinkertainen päivämäärän muotoiluohjelma javassa
std::set set_name;>

Tietotyyppi: Joukko voi ottaa minkä tahansa tietotyypin arvoista riippuen, esim. int, char, float jne.

Esimerkki:



set val; // defining an empty set set val = {6, 10, 5, 1}; // defining a set with values>

Ohjelmoida:

C++






// C++ Program to Demonstrate> // the basic working of STL> #include> #include> int> main()> {> >std::set<>char>>a;> >a.insert(>'G'>);> >a.insert(>'F'>);> >a.insert(>'G'>);> >for> (>auto>& str : a) {> >std::cout << str <<>' '>;> >}> >std::cout <<>' '>;> >return> 0;> }>

>

mikä on regex java

>

Lähtö

F G>

Aika monimutkaisuus: O(N) // N on joukon koko.

Aputila: PÄÄLLÄ)

Syy, miksi se tulostaa vain F:n ja G:n, on se, että joukko ei ota useita samoja arvoja, vaan hyväksyy vain yksilöllisen arvon. Voimme käyttää Multiset jos haluamme tallentaa useita samoja arvoja.

Sarja lajiteltu laskevaan järjestykseen

Oletusarvoisesti std::set lajitellaan nousevaan järjestykseen. Meillä on kuitenkin mahdollisuus muuttaa lajittelujärjestystä käyttämällä seuraavaa syntaksia.

std::set  set_name;>

Esimerkki:

C++




// C++ program to demonstrate the creation of descending> // order set container> #include> #include> using> namespace> std;> int> main()> {> >set<>int>, greater<>int>>> s1;> >s1.insert(10);> >s1.insert(5);> >s1.insert(12);> >s1.insert(4);> >for> (>auto> i : s1) {> >cout << i <<>' '>;> >}> >return> 0;> }>

css-keskipainike
>

>

Lähtö

12 10 5 4>

Aika monimutkaisuus: O(N) // N on joukon koko.

Aputila: PÄÄLLÄ)

Huomautus: Voimme käyttää mitä tahansa vertailijaa suuremman sijaan antaaksemme joukon mukautetun järjestyksen lajittelun.

Ominaisuudet

  1. Tilauksen säilytys - Setti tallentaa elementit sisään lajiteltu Tilaus.
  2. Arvot Ominaisuudet – Kaikilla sarjan elementeillä on ainutlaatuisia arvoja .
  3. Arvot luonto – Elementin arvoa ei voi muuttaa, kun se on lisätty joukkoon, vaikka kyseisen elementin muokattu arvo voidaan poistaa ja sitten lisätä. Arvot siis ovat muuttumaton .
  4. Hakutekniikka – Sarjat seuraavat Binäärihakupuu toteutus.
  5. Järjestä tilaus - Sarjan arvot ovat indeksoimaton .

Huomautus: Jos haluat tallentaa elementit lajittelemattomassa (satunnaisessa) järjestyksessä, unordered_set() voidaan käyttää.

Jotkut sarjaan liittyvät perustoiminnot

  • alkaa() – Palauttaa iteraattorin joukon ensimmäiseen elementtiin.
  • loppu () – Palauttaa iteraattorin teoreettiseen elementtiin, joka seuraa joukon viimeistä elementtiä.
  • koko() – Palauttaa joukon elementtien määrän.
  • max_size() – Palauttaa enimmäismäärän elementtejä, jotka joukko voi sisältää.
  • tyhjä() – Palauttaa, onko sarja tyhjä.

Aika monimutkaisuus erilaisten toimintojen tekemiseen sarjoissa on:

  • Elementtien lisääminen - O(log N)
  • Elementtien poistaminen – O(log N)

CPP




// C++ program to demonstrate various functions of> // STL> #include> #include> #include> using> namespace> std;> int> main()> {> >// empty set container> >set<>int>, greater<>int>>> s1;> >// insert elements in random order> >s1.insert(40);> >s1.insert(30);> >s1.insert(60);> >s1.insert(20);> >s1.insert(50);> >// only one 50 will be added to the set> >s1.insert(50);> >s1.insert(10);> >// printing set s1> >set<>int>, greater<>int>>>::iterator itr;> >cout <<>' The set s1 is : '>;> >for> (itr = s1.begin(); itr != s1.end(); itr++) {> >cout << *itr <<>' '>;> >}> >cout << endl;> >// assigning the elements from s1 to s2> >set<>int>>s2(s1.begin(), s1.end());> >// print all elements of the set s2> >cout <<>' The set s2 after assign from s1 is : '>;> >for> (itr = s2.begin(); itr != s2.end(); itr++) {> >cout << *itr <<>' '>;> >}> >cout << endl;> >// remove all elements up to 30 in s2> >cout <<>' s2 after removal of elements less than 30 '> >': '>;> >s2.erase(s2.begin(), s2.find(30));> >for> (itr = s2.begin(); itr != s2.end(); itr++) {> >cout << *itr <<>' '>;> >}> >// remove element with value 50 in s2> >int> num;> >num = s2.erase(50);> >cout <<>' s2.erase(50) : '>;> >cout << num <<>' removed '>;> >for> (itr = s2.begin(); itr != s2.end(); itr++) {> >cout << *itr <<>' '>;> >}> >cout << endl;> >// lower bound and upper bound for set s1> >cout <<>'s1.lower_bound(40) : '> ><< *s1.lower_bound(40) << endl;> >cout <<>'s1.upper_bound(40) : '> ><< *s1.upper_bound(40) << endl;> >// lower bound and upper bound for set s2> >cout <<>'s2.lower_bound(40) : '> ><< *s2.lower_bound(40) << endl;> >cout <<>'s2.upper_bound(40) : '> ><< *s2.upper_bound(40) << endl;> >return> 0;> }>

>

>

npm tyhjennä välimuisti
Lähtö

The set s1 is : 60 50 40 30 20 10 The set s2 after assign from s1 is : 10 20 30 40 50 60 s2 after removal of elements less than 30 : 30 40 50 60 s2.erase(50) : 1 removed 30 40 60 s1.lower_bound(40) : 40 s1.upper_bound(40) : 30 s2.lower_bound(40) : 40 s2.upper_bound(40) : 60>

Asetuksen eri toiminto C++ STL:ssä

Toiminto Kuvaus
alkaa() Palauttaa iteraattorin joukon ensimmäiseen elementtiin.
loppu () Palauttaa iteraattorin teoreettiseen elementtiin, joka seuraa joukon viimeistä elementtiä.
rbegin() Palauttaa käänteisen iteraattorin, joka osoittaa säilön viimeiseen elementtiin.
render() Palauttaa käänteisen iteraattorin, joka osoittaa teoreettiseen elementtiin juuri ennen ensimmäistä elementtiä sarjasäiliössä.
crbegin() Palauttaa vakioiteraattorin, joka osoittaa säilön viimeiseen elementtiin.
crend() Palauttaa vakioiteraattorin, joka osoittaa sijaintiin juuri ennen ensimmäistä elementtiä säiliössä.
cbegin() Palauttaa vakioiteraattorin, joka osoittaa säilön ensimmäiseen elementtiin.
muutama() Palauttaa vakioiteraattorin, joka osoittaa säiliön viimeisen elementin jälkeen olevaan kohtaan.
koko() Palauttaa joukon elementtien määrän.
max_size() Palauttaa enimmäismäärän elementtejä, jotka joukko voi sisältää.
tyhjä() Palauttaa, onko sarja tyhjä.
insert(const g) Lisää joukkoon uuden elementin 'g'.
iteraattorin lisäys (iteraattorin sijainti, const g) Lisää uuden elementin 'g' iteraattorin osoittamaan kohtaan.
pyyhkiä (iteraattorin paikka) Poistaa elementin iteraattorin osoittamasta kohdasta.
pyyhkiä (jatkuu g) Poistaa arvon 'g' joukosta.
asia selvä() Poistaa kaikki elementit sarjasta.
key_comp() / arvo_komp.() Palauttaa objektin, joka määrittää joukon elementtien järjestyksen (oletuksena '<').
löytää (jatku g) Palauttaa iteraattorin joukon elementtiin 'g', jos se löytyy, muussa tapauksessa palauttaa iteraattorin loppuun.
count (const g) Palauttaa arvon 1 tai 0 sen mukaan, onko elementti 'g' joukossa vai ei.
alaraja(vakio g) Palauttaa iteraattorin ensimmäiseen elementtiin, joka vastaa 'g' tai joka ei varmasti mene ennen elementtiä 'g' joukossa.
yläraja(vakio g) Palauttaa iteraattorin ensimmäiseen elementtiin, joka menee joukon elementin 'g' jälkeen.
equal_range() Funktio palauttaa parien iteraattorin. (key_comp). Pari viittaa alueeseen, joka sisältää kaikki säiliön elementit, joilla on k:ta vastaava avain.
emplace() Tätä toimintoa käytetään uuden elementin lisäämiseen sarjasäiliöön vain, jos lisättävä elementti on ainutlaatuinen eikä sitä ole jo olemassa joukossa.
emplace_hint() Palauttaa iteraattorin, joka osoittaa paikkaan, jossa lisäys on tehty. Jos parametrissa välitetty elementti on jo olemassa, se palauttaa iteraattorin, joka osoittaa paikkaan, jossa olemassa oleva elementti on.
vaihtaa() Tätä toimintoa käytetään kahden sarjan sisällön vaihtamiseen, mutta sarjojen on oltava samaa tyyppiä, vaikka koot voivat vaihdella.
operaattori = '=' on operaattori C++ STL:ssä, joka kopioi (tai siirtää) joukon toiseen joukkoon ja set::operator= on vastaava operaattorifunktio.
get_allocator() Palauttaa kopion joukkoon liittyvästä allokaattoriobjektista.

Ero sarjan ja järjestämättömän joukon välillä

Aseta

Tilaamaton setti

Set tallentaa elementit lajiteltuun järjestykseen Järjestämätön joukko tallentaa elementit lajittelemattomassa järjestyksessä
Aseta tallentaa / hanki vain ainutlaatuisia elementtejä Järjestämätön Aseta tallentaa/hankkia vain yksilölliset arvot
Joukko käyttää binäärihakupuita toteutuksessa Järjestämätön joukko käyttää hajautustaulukoita toteutuksessa
Useampi kuin yksi elementti voidaan poistaa antamalla aloitus- ja lopetusiteraattori Voimme poistaa sen elementin, jolle iteraattorin paikka on annettu
aseta Set_Name; unordered_set UnorderedSet_Name;

Lisätietoja saat artikkelista - Sarjat vs järjestämätön sarja .