C ++ ir viena no spēcīgākajām un biedējošākajām programmēšanas valodām, ar kuru jūs varētu saskarties kā iesācējs. Iemesls ir diezgan vienkāršs. Lai sasniegtu vēlamo rezultātu, tas prasa daudz koda. Standarta veidņu bibliotēka vai STL var palīdzēt jums atrisināt šo problēmu.

Ņemot vērā laika un pūļu daudzumu, kas patērēts, rakstot kodu tādām funkcijām kā šķirošana un meklēšana, STL var palīdzēt jums veikt visas šīs darbības tikai ar vienu koda rindiņu. Šī bibliotēka var būt ļoti noderīga problēmu risināšanā un tehnisko interviju sagatavošanā.

Kas ir standarta veidņu bibliotēka?

Standarta veidņu bibliotēka jeb STL ir C ++ bibliotēka, kas sastāv no iepriekš uzbūvētām funkcijām un konteineriem. Tas ietver dažas ievērojamas veidņu klases parastajām datu struktūrām, piemēram, vektoriem, kaudzēm, rindām un dažas noderīgas algoritmiskās funkcijas, piemēram, bināro meklēšanu, lai atvieglotu programmēšanu.

Standarta veidņu bibliotēka C ++ sastāv no četriem komponentiem:

  1. Algoritmi
  2. Konteineri
  3. Funkcijas
  4. Iteratori

Apskatīsim algoritmus un konteinerus dziļāk, jo tie ir visbiežāk izmantotie STL komponenti.

Algoritmi STL

The galvenes fails ir STL daļa, kas sastāv no vairākām algoritmiskām funkcijām, kuras var izmantot, nevis manuāli kodēt. Daži no iekļautajiem algoritmiem ir binārā meklēšana, šķirošana un reversēšana, kas ir ārkārtīgi noderīgi.

Vispirms jums ir jāimportē galveni jūsu C ++ failā. Sintakse ir šāda:

# iekļaut 

Gaidāmajām metodēm kā piemēru ņemiet vērā masīva mainīgo ar vērtību {6, 2, 9, 1, 4}.

int arr [] = {6, 2, 9, 1, 4};

kārtot ()

The kārtot () funkcija palīdz sakārtot visus elementus norādītajā datu struktūrā augošā secībā. Šai funkcijai nepieciešami divi parametri: sākuma iterators un beigu iterators.

Saistīts: Ievads sapludināšanas šķirošanas algoritmā

Sintakse:

kārtot (start_iterator, end_iterator);

Šeit ir īss piemērs:

kārtot (arr, arr + 5);
par (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Izeja:

1 2 4 6 9

reverss ()

The reverss () funkcija apmaina elementu secību norādītajā datu struktūrā. Tas pieņem divus parametrus: sākuma iteratoru un beigu iteratoru.

Sintakse:

reverss (start_iterator, end_iterator);

Šeit ir īss iepriekš minētās metodes piemērs:

reverss (arr, arr + 5);
par (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Izeja:

4 1 9 2 6

* min_element () un * max_element ()

Funkcijas * max_element () un * min_element () atgriež maksimālo un minimālo vērtību attiecīgi norādītajā datu struktūrā. Abas šīs funkcijas pieņem divus argumentus: sākuma iteratoru un beigu iteratoru.

Sintakse:

* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);

Noskaidrosim, kādas vērtības šīs funkcijas atgriež, izsaucot tās masīva piemērā:

cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;

Izeja:

9
1

binary_search ()

The binary_search () metodi izmanto, lai noskaidrotu, vai norādītā vērtība ir datu struktūras iekšpusē. Tas pieņem trīs argumentus: sākuma iteratoru, beigu iteratoru un vērtību, kuru vēlaties atrast.

Binārā meklēšana darbojas tikai uz sakārtotām datu struktūrām. Tādēļ jums būs jāzvana kārtot () metodi vispirms pirms binary_search () metodi.

Sintakse:

binārā_meklēšana (start_iterator, end_iterator, value_to_find)

Lūk, šīs metodes demonstrācija:

kārtot (arr, arr + 5);
binārā_meklēšana (arr, arr + 5, 2)? cout << "Elements atrasts": cout << "Elements nav atrasts";
binārā_meklēšana (arr, arr + 5, 7)? cout << "Elements atrasts": cout << "Elements nav atrasts";

Izeja:

Elements atrasts
Elements nav atrasts

skaitīt ()

The skaitīt () metode atgriež norādītās vērtības sastopamības skaitu datu struktūrā. Tam nepieciešami trīs argumenti: sākuma iterators, beigu iterators un skaitāmā vērtība.

Sintakse:

skaits (start_iterator, end_iterator, value_to_count);

Šeit ir šīs metodes piemērs:

cout << skaits (arr, arr + 5, 2) << endl;

Izeja:

1

Konteineri STL

Konteineri ir datu struktūras, kas glabā objektus un datus. Vektori, saraksti, skursteņi, rindas, kopas un kartes ir daži no piemēriem, kas tajos glabā datus atbilstoši norādītajam primitīvajam datu tipam. Šos konteinerus varat izmantot, importējot to attiecīgās galvenes C ++ failā.

Inicializējot konteinera mainīgo, jums jāpiemin primitīvie dati, piemēram, int, char, virkne iekšpusē <> iekavās.

Izpētīsim dažus no šiem konteineriem sīkāk:

Vector

Vektori ir dinamiski bloki, kuru izmērs ir maināms un ar kuriem var elastīgi strādāt. Ievietojot vai dzēšot elementu no vektora, tas automātiski pielāgo vektora lielumu. Tas ir līdzīgs ArrayList datu struktūra Java valodā.

Sintakse:

# iekļaut 
vektors mainīgais_nosaukums;

Šeit ir dažas svarīgas vektoru metodes:

  1. push_back (vērtība): Šī metode pievieno datus vektoram.
  2. pop_back (): Šī metode noņem no vektora pēdējo elementu.
  3. ievietot (indekss, vērtība): Šī metode ievieto jaunus elementus pirms elementa norādītajā vietā.
  4. Izmērs(): Šī metode atgriež vektora lielumu.
  5. tukšs (): Šī metode pārbauda, ​​vai vektors ir tukšs.
  6. priekšā (): Šī metode atgriež vektora pirmo vērtību.
  7. atpakaļ (): Atpakaļ metode atgriež vektora pēdējo vērtību.
  8. pie (indekss): Šī metode atgriež vērtību norādītajā pozīcijā.
  9. dzēst (rādītājs): Dzēšanas metode noņem elementus no norādītā indeksa.
  10. skaidrs (): Šī metode notīra visus vektora vienumus.
vektors  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. ievietot (v. sākt () + 1, 7);
cout << "Dotā vektora lielums" << v.size () << endl;
ja (v. tukšs ()) {
cout << "Vektors ir tukšs" << endl;
} cits
cout << "Vektors nav tukšs" << endl;
}
cout << "Elements pirmajā pozīcijā ir" << v.front () << endl;
cout << "Elements pēdējā pozīcijā ir" << v.back () << endl;
cout << "Elements dotajā pozīcijā ir" << v.at (4) << endl;
v.erase (v.sākas () + 1);
par (int i = 0; i cout << v [i] << "";
}

Izeja:

Dotā vektora lielums 6
Vektors nav tukšs
Elements pirmajā pozīcijā ir 23
Elements pēdējā pozīcijā ir 5
Elements dotajā pozīcijā ir 10
23 12 56 10 5

Rinda

Rindas datu struktūrā elementi tiek ievietoti no aizmugures un izdzēsti no priekšpuses. Tādējādi tā izmanto FIFO ("pirmais iekšā, pirmais ārā") pieeju.

Sintakse:

# iekļaut 
rinda mainīgais_nosaukums;

Šeit ir dažas svarīgas rindu metodes:

  1. push (vērtība): Šī metode rindai pievieno elementus.
  2. pop (): Šī metode izdzēš rindas pirmo elementu.
  3. Izmērs(): Šī metode atgriež rindas lielumu.
  4. priekšā (): Šī metode atgriež rindas pirmo elementu.
  5. atpakaļ (): Šī metode atgriež rindas pēdējo elementu.
rinda  q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Pirmais elements ir" << q.front () << endl;
cout << "Pēdējais elements ir" << q.back () << endl;
cout << "Rindas lielums ir" << q.size () << endl;
q.pop ();
cout << "Visu rindas elementu drukāšana" << endl;
kamēr (! q. tukšs ()) {
cout << q.front () << "";
q.pop ();
}

Izeja:

Pirmais elements ir 30
Pēdējais elements ir 70
Rindas lielums ir 5
Visu rindas elementu drukāšana
40 50 60 70

Kaudze

Krāvēju konteineri darbojas ar LIFO metodi. LIFO nozīmē "pēdējais iekšā, pirmais ārā". Dati tiek virzīti un atvērti no tā paša gala.

Sintakse:

# iekļaut 
kaudze mainīgais_nosaukums;

Šeit ir dažas svarīgas kaudzes metodes:

  1. push (vērtība): Šī metode nospiež elementu kaudzē.
  2. pop (): Šī metode izdzēš kaudzes augšējo elementu.
  3. tops(): Šī metode atgriež pēdējā kaudzē ievadītā elementa vērtību.
  4. Izmērs(): Šī metode atgriež kaudzes lielumu.
  5. tukšs (): Šī metode pārbauda, ​​vai kaudze ir tukša.
kaudze  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Steka augšdaļā ir" << s.top () << endl;
s.pop ();
cout << "Steka augšdaļa pēc pop operācijas veikšanas:" << s.top () << endl;
cout << "Visu kaudzes elementu drukāšana" << endl;
kamēr (! s. tukšs ()) {
cout << s.top () << "";
s.pop ();
}

Izeja:

Steka augšdaļā ir 60
Steka augšdaļa pēc pop operācijas veikšanas: 50
Visu kaudzes elementu drukāšana
50 40 30

Iestatiet

Komplekta konteineri tiek izmantoti unikālu vērtību glabāšanai, un elementa vērtību nevar mainīt, kad tas ir ievietots komplektā. Visi komplekta elementi tiek glabāti sakārtoti. Komplekta tvertne ir līdzīga iestatiet datu struktūru Python.

Sintakse:

# iekļaut 
komplekts mainīgais_nosaukums;

Šeit ir dažas svarīgas kopas metodes:

  1. ievietot (vērtība): Šī metode ievieto elementus komplektā.
  2. sākt (): Šī metode atgriež atkārtotāju kopas pirmajā elementā.
  3. beigas (): Šī metode atgriež atkārtotāju kopas pēdējā elementā.
  4. Izmērs(): Šī metode atgriež kopas lielumu.
  5. tukšs (): Šī metode pārbauda, ​​vai kopa ir tukša vai nav.
  6. atrast (vērtība): Šī metode atgriež iteratoru parametrā nodotajam elementam. Ja elements nav atrasts, šī funkcija atgriež atkārtotāju kopas beigās.
  7. dzēst (vērtība): Šī metode izdzēsa norādīto elementu no kopas.
iestatīt  s;
s. ievietot (20);
s. ievietot (30);
s. ievietot (40);
s. ievietot (50);
s. ievietot (60);
s. ievietot (60);
s. ievietot (60);
auto i = s. sākums ();
cout << "Elements pirmajā pozīcijā" << * i << endl;
cout << "Kopas lielums" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Elements atrasts" << endl: cout << "Elements nav atrasts" << endl;
s.erase (30);
cout << "Visu elementu drukāšana" << endl;
for (auto i = s. sākums (); i! = s.end (); i ++) {
cout << * i << "";
}

Izeja:

Elements pirmajā pozīcijā 20
Komplekta lielums 5
Elements atrasts
Visu elementu drukāšana
20 40 50 60

C ++ nav jābūt grūti

Gluži tāpat kā citas prasmes, arī STL ir maksimāli lietderīgi izmantot praksi. Šie konteineri un algoritmi var palīdzēt ietaupīt daudz laika un ir ērti lietojami. Sāciet, praktizējot iepriekš parādītos piemērus, un jūs galu galā sāksit to izmantot arī savos projektos.

Tomēr, ja jūs pirmo reizi mācāties C ++, vispirms mācieties pamatus, pirms sākat saprast STL.

E-pasts
Kā iemācīties C ++ programmēšanu: 6 vietnes, lai sāktu darbu

Vai vēlaties iemācīties C ++? Šeit ir labākās vietnes un tiešsaistes kursi C ++ iesācējiem un pieredzējušiem programmētājiem.

Lasiet Tālāk

Saistītās tēmas
  • Programmēšana
  • Kodēšanas konsultācijas
  • Funkcionālā programmēšana
Par autoru
Nitins Ranganāts (Publicēti 22 raksti)

Nitins ir dedzīgs programmatūras izstrādātājs un datortehnikas students, kurš izstrādā tīmekļa lietojumprogrammas, izmantojot JavaScript tehnoloģijas. Viņš strādā kā ārštata tīmekļa izstrādātājs un brīvajā laikā patīk rakstīt Linux un Programming.

Vairāk no Nitina Ranganata

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.