Seznami so zaporedje zabojniki ki omogočajo nesosednjo dodelitev pomnilnika. V primerjavi z vektorjem ima seznam počasen prehod, ko pa je položaj najden, sta vstavljanje in brisanje hitro (konstanten čas). Običajno, ko rečemo seznam, govorimo o a dvojno vezan seznam . Za izvedbo enojno povezanega seznama uporabljamo a naprej_seznam .
std::list je razred vsebnika seznama. Je del standardne knjižnice predlog C++ (STL) in je definiran znotraj naslovna datoteka.
Sintaksa:
std::list name_of_list;>
primer:
C++
omrežje in internet
// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }> |
>
>Izhod
12 45 8 6>
V zgornjem primeru smo ustvarili objekt std::list z imenom gqlist in ga inicializiral s seznamom initializer_list. Objekte std::list lahko inicializiramo na veliko različnih omenjenih načinov tukaj
Nekaj osnovnih operacij na std::list
- spredaj() – Vrne vrednost prvega elementa na seznamu.
- nazaj() – Vrne vrednost zadnjega elementa na seznamu.
- push_front() – Na začetek seznama doda nov element 'g'.
- porini nazaj() – Na koncu seznama doda nov element 'g'.
- pop_front() – Odstrani prvi element seznama in zmanjša velikost seznama za 1.
- pop_back() – Odstrani zadnji element seznama in zmanjša velikost seznama za 1.
- vstavi() – Vstavi nove elemente na seznam pred elementom na določenem mestu.
- velikost () – Vrne število elementov na seznamu.
- začeti() – funkcija begin() vrne iterator, ki kaže na prvi element seznama.
- konec () – funkcija end() vrne iterator, ki kaže na teoretični zadnji element, ki sledi zadnjemu elementu.
Spodnji primer prikazuje splošno uporabo vsebnikov seznamov in njihovih osnovnih funkcij v C++.
primer:
primeri vzorčne kode javascript
C++
// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::iterator it;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>'
'>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>'
List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>'
List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>'
gqlist1.front() : '> << gqlist1.front();> >cout <<>'
gqlist1.back() : '> << gqlist1.back();> >cout <<>'
gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>'
gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>'
gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>'
gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }> |
>
>Izhod
List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>
Zgornji primer samo prikazuje splošno uporabo std::list in njegovih funkcij članov. Spodnja tabela vsebuje vse članske funkcije razreda std::list in povezave do njihove podrobne razlage.
metoda podniza java
std::list članske funkcije
| Funkcije | Opredelitev |
|---|---|
| spredaj() | Vrne vrednost prvega elementa na seznamu. |
| nazaj() | Vrne vrednost zadnjega elementa na seznamu. |
| push_front(g) | Na začetek seznama doda nov element 'g'. |
| push_back(g) | Na koncu seznama doda nov element 'g'. |
| pop_front() | Odstrani prvi element seznama in zmanjša velikost seznama za 1. |
| pop_back() | Odstrani zadnji element seznama in zmanjša velikost seznama za 1. |
| seznam::začetek() | funkcija begin() vrne iterator, ki kaže na prvi element seznama. |
| seznam::konec() | funkcija end() vrne iterator, ki kaže na teoretični zadnji element, ki sledi zadnjemu elementu. |
| seznam rbegin() in rend() | rbegin() vrne povratni iterator, ki kaže na zadnji element seznama. rend() vrne povratni iterator, ki kaže na položaj pred začetkom seznama. |
| seznam cbegin() in cend() | cbegin() vrne stalni iterator z naključnim dostopom, ki kaže na začetek seznama. cend() vrne stalni iterator z naključnim dostopom, ki kaže na konec seznama. |
| seznam crbegin() in crend() | crbegin() vrne konstanten povratni iterator, ki kaže na zadnji element seznama, tj. obratni začetek vsebnika. crend() vrne konstanten povratni iterator, ki kaže na teoretični element pred prvim elementom na seznamu, tj. obratni konec seznama. |
| prazno() | Vrne, ali je seznam prazen (1) ali ne (0). |
| vstavi() | Vstavi nove elemente na seznam pred elementom na določenem mestu. |
| izbrisati() | S seznama odstrani en element ali obseg elementov. |
| dodeli() | Seznamu dodeli nove elemente tako, da zamenja trenutne elemente in spremeni velikost seznama. |
| Odstrani() | S seznama odstrani vse elemente, ki so enaki danemu elementu. |
| list::remove_if() | Uporablja se za odstranitev vseh vrednosti s seznama, ki ustrezajo predikatu ali pogoju, podanemu kot parameter funkcije. |
| obratno() | Obrne seznam. |
| velikost () | Vrne število elementov na seznamu. |
| spreminjanje velikosti seznama () | Uporablja se za spreminjanje velikosti vsebnika seznama. |
| razvrsti() | Razvrsti seznam v naraščajočem vrstnem redu. |
| seznam max_size() | Vrne največje število elementov, ki jih lahko vsebuje vsebnik seznama. |
| edinstven seznam () | S seznama odstrani vse podvojene zaporedne elemente. |
| list::emplace_front() in list::emplace_back() | Funkcija .emplace_front() se uporablja za vstavljanje novega elementa v vsebnik seznama in konstruira objekt na mestu na začetku seznama. . Funkcija emplace_back() se uporablja za vstavljanje novega elementa v vsebnik seznama in konstruira objekt na mestu na koncu seznama. |
| seznam::počisti() | funkcija clear() se uporablja za odstranitev vseh elementov vsebnika seznama, s čimer postane velikost 0. |
| seznam::operator= | Ta operator se uporablja za dodeljevanje nove vsebine vsebniku z zamenjavo obstoječe vsebine. |
| seznam::swap() | Ta funkcija se uporablja za zamenjavo vsebine enega seznama z drugim seznamom. |
| spajanje seznama () | Uporablja se za prenos elementov z enega seznama na drugega. |
| spajanje seznamov () | Združi dva razvrščena seznama v enega. |
| seznam emplace() | Razširi seznam tako, da vstavi nov element na dano mesto in sestavi objekt na mestu na začetku seznama, kar lahko izboljša zmogljivost z izogibanjem operaciji kopiranja |
Točke, ki si jih morate zapomniti o vsebniku seznama
- Na splošno se izvaja z uporabo dinamičnega dvojno povezanega seznama s prehodom v obe smeri.
- Hitrejša operacija vstavljanja in brisanja v primerjavi z nizi in vektorji.
- Omogoča samo zaporedni dostop. Naključni dostop do katerega koli srednjega elementa ni mogoč
- Definiran je kot predloga, tako da lahko vsebuje katero koli vrsto podatkov.
- Deluje kot nerazvrščen seznam, kar pomeni, da privzeto vrstni red seznama ni ohranjen. Vendar pa obstajajo tehnike za razvrščanje.