Algoritmi standard

În plus față de containere, biblioteca standard conține un număr mare de algoritmi (aproximativ 60). Algoritmul STL este un algoritm în sensul literal al cuvântului; unele operații efectuate pe unele date.





Toți algoritmii procesează datele reprezentate ca o secvență specificată de două iteratori. Aceasta înseamnă că algoritmii STL pot trata atât conținutul containerelor standard STL, cât și cele nestandard (dar compatibile cu acestea), precum și orice secvență reprezentată de o pereche de iteratori compatibili cu STL.







// programul afișează alfabetul latin

folosind namespace std;

int principal (int, char **)

pentru (i = 0; i <26; i++)

Algoritmii standard efectuează astfel de acțiuni frecvent întâlnite ca căutare, numărare, înlocuire, ștergere și diferite tipuri de sortare. În acest caz, toți algoritmii standard pot fi împărțiți în două grupe: secvențe de modificare și secvențe nemodificatoare. De obicei, printre algoritmi de modificare sunt selectați algoritmi de sortare.

Secvențe prelucrate

Trebuie remarcat faptul că toate algoritmii standard, este luat ca secvența procesată, secvența formei [iterator_first; iterator_last), iterator gdeiterator_first- indicând primul element al secvenței, iterator iterator_last- la elementul secvenței următoare ultimei (elementul zakonechny).

Trebuie de asemenea remarcat faptul că algoritmii nu verifică datele transferate către ele, adică transferate la secvențe algoritmi standard trebuie să fie iterator_lastdolzhen valid să fie iziterator_firstza realizabile finite (eventual zero) număr de pași. Dacă secvența nu este validă, comportamentul programului este nedefinit.

vector vec1 (10); // vector de 10 elemente

vector vec2 (100); // vector de 10 elemente

// [vec1.begin () + 5; vec1.begin ()) este o secvență nevalidă,

// în ciuda faptului că iteratorii sunt în mod individual valabili

// vec1.begin () este imposibil de atins de la vec1.begin () + 5

// [vec1.begin () + 50; vec1.end ()) este o secvență nevalidă,

// vec1.begin () + 50 - iterator nevalid

// [vec1.begin (); vec2.end ()) este o secvență nevalidă,

// iteratorii aparțin unor containere diferite

Unii algoritmi 1. acceptă două secvențe ca intrări. Prima secvență este specificată, ca de obicei, cu o pereche de iteratori [first1; last1), iar a doua numai prima este un iterator care indică începutul secvenței. În acest caz, se presupune de obicei că lungimea celei de a doua secvențe este cel puțin nu mai mică decât lungimea primei secvențe, i. E. aplicația iterator la iteratoror prima 2 operațiunioperator ++ (ultima1 - prima) ori nu trebuie să conducă la invalidarea rezultatului iterator rezultat.







Articole similare

Trimiteți-le prietenilor: