Saraksti ir secīgi konteineri kas ļauj nesaistītu atmiņas piešķiršanu. Salīdzinot ar vektoru, sarakstam ir lēna pārvietošanās, bet, kad pozīcija ir atrasta, ievietošana un dzēšana notiek ātri (nemainīgs laiks). Parasti, kad mēs sakām sarakstu, mēs runājam par a divreiz saistīts saraksts . Lai ieviestu atsevišķi saistītu sarakstu, mēs izmantojam a forward_list .
std::list ir saraksta konteinera klase. Tā ir C++ standarta veidņu bibliotēkas (STL) daļa un ir definēta iekšpusē galvenes fails.
Sintakse:
ssh pilna forma
std::list name_of_list;>
Piemērs:
C++
// 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;> }> |
>
>Izvade
12 45 8 6>
Iepriekš minētajā piemērā mēs izveidojām std::list objektu ar nosaukumu gqlist un inicializēja to, izmantojot inicializācijas_sarakstu. Mēs varam inicializēt std::list objektus, izmantojot dažādus minētos veidus šeit.
Dažas pamatoperācijas sarakstā std::list
- priekšā () – Atgriež saraksta pirmā elementa vērtību.
- atpakaļ () – Atgriež saraksta pēdējā elementa vērtību.
- push_front() – Pievieno jaunu elementu “g” saraksta sākumā.
- atgrūst() – Pievieno jaunu elementu “g” saraksta beigās.
- pop_front() – Noņem pirmo saraksta elementu un samazina saraksta lielumu par 1.
- pop_back() – Noņem pēdējo saraksta elementu un samazina saraksta lielumu par 1.
- ievietot () – Ievieto jaunus elementus sarakstā pirms elementa noteiktā vietā.
- Izmērs() – Atgriež elementu skaitu sarakstā.
- sākt () – Funkcija begin() atgriež iteratoru, kas norāda uz pirmo saraksta elementu.
- beigas () – end() funkcija atgriež iteratoru, kas norāda uz teorētisko pēdējo elementu, kas seko pēdējam elementam.
Tālāk sniegtajā piemērā ir parādīta vispārīga sarakstu konteineru izmantošana un to pamatfunkcijas C++ valodā.
Piemērs:
java salīdzināms
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;> }> |
git rebase
>
>Izvade
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>
Iepriekš minētais piemērs parāda tikai vispārīgo std::list un tā dalībnieku funkciju lietojumu. Tālāk esošajā tabulā ir sniegtas visas std::list klases dalībnieku funkcijas un saites uz to detalizētu skaidrojumu.
std::list Dalībnieku funkcijas
| Funkcijas | Definīcija |
|---|---|
| priekšā () | Atgriež pirmā elementa vērtību sarakstā. |
| atpakaļ () | Atgriež saraksta pēdējā elementa vērtību. |
| push_front(g) | Pievieno jaunu elementu “g” saraksta sākumā. |
| push_back(g) | Pievieno jaunu elementu “g” saraksta beigās. |
| pop_front() | Noņem pirmo saraksta elementu un samazina saraksta lielumu par 1. |
| pop_back() | Noņem pēdējo saraksta elementu un samazina saraksta lielumu par 1. |
| saraksts::begin() | Funkcija begin() atgriež iteratoru, kas norāda uz pirmo saraksta elementu. |
| saraksts::beigas() | end() funkcija atgriež iteratoru, kas norāda uz teorētisko pēdējo elementu, kas seko pēdējam elementam. |
| saraksts rbegin() un rend() | rbegin() atgriež apgriezto iteratoru, kas norāda uz pēdējo saraksta elementu. rend() atgriež apgriezto iteratoru, kas norāda uz pozīciju pirms saraksta sākuma. |
| saraksts cbegin() un cend() | cbegin() atgriež pastāvīgu brīvpiekļuves iteratoru, kas norāda uz saraksta sākumu. cend() atgriež pastāvīgu brīvpiekļuves iteratoru, kas norāda uz saraksta beigām. |
| saraksts crbegin() un crend() | crbegin () atgriež pastāvīgu apgriezto iteratoru, kas norāda uz pēdējo saraksta elementu, t.i., konteinera apgriezto sākumu. crend() atgriež konstantu apgriezto iteratoru, kas norāda uz teorētisko elementu, kas ir pirms pirmā elementa sarakstā, t.i., uz saraksta reverso galu. |
| tukšs () | Atgriež, vai saraksts ir tukšs (1) vai nav (0). |
| ievietot () | Ievieto jaunus elementus sarakstā pirms elementa noteiktā vietā. |
| dzēst () | No saraksta noņem vienu elementu vai elementu diapazonu. |
| piešķirt () | Piešķir sarakstam jaunus elementus, aizstājot pašreizējos elementus un mainot saraksta izmērus. |
| noņemt () | No saraksta noņem visus elementus, kas ir vienādi ar doto elementu. |
| saraksts::remove_if() | Izmanto, lai no saraksta noņemtu visas vērtības, kas atbilst predikātam vai nosacījumam, kas norādīts kā funkcijas parametrs. |
| reverse() | Apgriež sarakstu. |
| Izmērs() | Atgriež elementu skaitu sarakstā. |
| saraksta izmēru maiņa () | Izmanto, lai mainītu saraksta konteinera izmērus. |
| kārtot () | Sakārto sarakstu augošā secībā. |
| saraksts max_size() | Atgriež maksimālo elementu skaitu, ko var saturēt saraksta konteinerā. |
| saraksts unikāls() | No saraksta noņem visus secīgos elementu dublikātus. |
| list::emplace_front() un list::emplace_back() | Funkciju .emplace_front() izmanto, lai saraksta konteinerā ievietotu jaunu elementu, un tā konstruē objektu saraksta sākumā. . Funkciju emplace_back() izmanto, lai saraksta konteinerā ievietotu jaunu elementu, un saraksta beigās konstruē objektu vietā. |
| saraksts::clear() | Clear() funkcija tiek izmantota, lai noņemtu visus saraksta konteinera elementus, tādējādi padarot to par 0 lielumu. |
| saraksts::operators= | Šis operators tiek izmantots, lai konteineram piešķirtu jaunu saturu, aizstājot esošo saturu. |
| saraksts::swap() | Šī funkcija tiek izmantota, lai apmainītu viena saraksta saturu ar citu sarakstu. |
| saraksta savienojums () | Izmanto, lai pārsūtītu elementus no viena saraksta uz citu. |
| sarakstu sapludināšana() | Apvieno divus sakārtotus sarakstus vienā. |
| saraksts emplace() | Paplašina sarakstu, ievietojot jaunu elementu noteiktā vietā, un tas konstruē objektu vietā saraksta sākumā, potenciāli uzlabojot veiktspēju, izvairoties no kopēšanas |
Lietas, kas jāatceras par saraksta konteineru
- Tas parasti tiek ieviests, izmantojot dinamisku, divkārši saistītu sarakstu ar pārvietošanos abos virzienos.
- Ātrāka ievietošanas un dzēšanas darbība, salīdzinot ar masīviem un vektoriem.
- Tas nodrošina tikai secīgu piekļuvi. Brīvpiekļuve nevienam vidējam elementam nav iespējama
- Tas ir definēts kā veidne, lai tajā varētu būt jebkura veida dati.
- Tas darbojas kā nešķirots saraksts, kas nozīmē, ka pēc noklusējuma saraksta secība netiek saglabāta. Tomēr ir paņēmieni šķirošanai.