Standard algoritmusok

A konténerek mellett a standard könyvtár számos algoritmust tartalmaz (kb. 60). Az STL algoritmus egy szó szó szerinti értelemben vett algoritmusa; néhány művelet bizonyos adatokon. Minden algoritmus feldolgozza az adatokat két iterátor által meghatározott sorrendben. Ez azt jelenti, hogy a tartalom algoritmySTLmogut kezelni konteynerovSTL szabványos és nem szabványos (de kompatibilis vele), valamint bármely szekvenciáját paroySTLsovmestimyh iterátorokat.

// a program megjeleníti a latin ábécét

névtér std;

int fő (int, char **)

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

A standard algoritmusok olyan gyakran előforduló műveleteket hajthatnak végre, mint a keresés, a számlálás, a csere, a törlés és a különböző típusú rendezések. Ebben az esetben az összes standard algoritmus két csoportra osztható: módosító szekvenciák és nem módosító szekvenciák. Jellemzően a módosító algoritmusok között a rendezési algoritmusok kerülnek kiválasztásra.

Feldolgozott szekvenciák

Meg kell jegyezni, hogy az összes szabványos algoritmusok vesszük a feldolgozott szekvencia, a szekvencia formájában [iterator_first; iterator_last), gdeiterator_first- iterátor jelezve az első eleme a szekvencia, iterator_last- iterator az elem a követő szekvencia az utolsó (zakonechny elem).

Azt is meg kell jegyezni, hogy az algoritmusok nem ellenőrzik a rájuk átadott adatokat, azaz A standard szekvencia algoritmusoknak átadott szekvenciáknak érvényeseknek kell lenniük, az iterator_last-nak elérhetőnek kell lennie aiteriter_first, a végleges (esetleg nulla) lépések számától. Ha a sorrend nem érvényes, a program viselkedése nem meghatározott.

vektor vec1 (10); // 10 elem vektor

vektor vec2 (100); // 10 elem vektor

// [vec1.begin () + 5; A vec1.begin ()) érvénytelen sorrend,

// annak ellenére, hogy az iterátorok egyenként érvényesek

// vec1.begin () nem érhető el a vec1.begin () + 5-ből

// [vec1.begin () + 50; A vec1.end ()) egy érvénytelen sorrend,

// vec1.begin () + 50 - Érvénytelen iterátor

// [vec1.begin (); A vec2.end ()) egy érvénytelen sorrend,

// iterátorok különböző tartályokhoz tartoznak

Egyes algoritmusok 1. bemenetként két szekvenciát fogadnak el. Az első szekvenciát a szokásos módon egy iterátorpárral határozzuk meg [first1; last1), és a second onlyfirst2 egy iterátor, amely a szekvencia elejére mutat. Ebben az esetben általában azt feltételezzük, hogy a második szekvencia hossza legalább nem kisebb, mint az első szekvencia hossza, azaz E. az iterator alkalmazásnak az iteratoror első 2 műveleti operátor ++ (utolsó1-első) időpontja nem eredményezheti az eredő iterátor érvénytelenségét.

Kapcsolódó cikkek