A C ++ az egyik legerősebb és legfélelmetesebb programozási nyelv, amellyel kezdőként találkozhat. Az ok elég egyértelmű. Sok kódot igényel a kívánt kimenet eléréséhez. A szokásos sablonkönyvtár vagy az STL segíthet megoldani ezt a gondot.

Figyelembe véve az idő és erőfeszítés mennyiségét, miközben kódokat írunk olyan funkciókhoz, mint a rendezés és a keresés, az STL egyetlen kódsorral segíthet mindezen műveletek végrehajtásában. Ez a könyvtár rendkívül hasznos lehet a problémamegoldáshoz és a technikai interjúk előkészítéséhez.

Mi a szokásos sablonkönyvtár?

A Standard Template Library, vagy STL, egy C ++ könyvtár, amely előre felépített funkciókból és tárolókból áll. Tartalmaz néhány kiemelkedő sablon osztályt a közös adatstruktúrákhoz, például vektorok, verem, sorok, és néhány praktikus algoritmikus funkciót, például a bináris keresést a programozás megkönnyítése érdekében.

A C ++ szabványos sablonkönyvtára négy összetevőből áll:

  1. Algoritmusok
  2. Konténerek
  3. Funkciók
  4. Iterátorok

Vessünk egy pillantást az algoritmusokra és a tárolókra mélyebben, mivel ezek az STL leggyakrabban használt összetevői.

instagram viewer

Algoritmusok az STL-ben

A fejlécfájl az STL része, amely több algoritmikus függvényből áll, amelyek felhasználhatók manuális kódolás helyett. Az algoritmusok egy része bináris keresés, rendezés és visszafordítás, amelyek rendkívül hasznosak.

Először is importálnia kell a fejléc a C ++ fájlban. A szintaxis a következő:

#include 

A közelgő módszereknél vegyünk példának egy tömb változót, amelynek értéke {6, 2, 9, 1, 4}.

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

fajta()

A fajta() függvény segít a megadott adatstruktúrában lévő összes elem növekvő sorrendben történő rendezésében. Ennek a funkciónak két paramétere van: a kezdő iterátor és a befejező iterátor.

Összefüggő: Bevezetés a Merge Sort algoritmusba

Szintaxis:

rendezés (start_iterator, end_iterator);

Itt egy rövid példa:

rendezés (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Kimenet:

1 2 4 6 9

fordított()

A fordított() függvény megfordítja az elemek sorrendjét a megadott adatstruktúrában. Két paramétert fogad el: a kezdő iterátort és a befejező iterátort.

Szintaxis:

fordított (start_iterator, end_iterator);

Íme egy rövid példa a fenti módszerre:

hátramenet (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Kimenet:

4 1 9 2 6

* min_element () és * max_element ()

A funkciók * max_element () és * min_element () adja vissza a maximális és a minimális értéket a megadott adatszerkezetben. Mindkét függvény két érvet fogad el: a kezdő iterátort és a vég iterátort.

Szintaxis:

* max_element (start_iterator, end_iterator);
* min_element (kezdő_iterátor, end_iterátor);

Tudjuk meg, hogy ezek a függvények milyen értékeket adnak vissza, amikor meghívjuk őket a példa tömbre:

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

Kimenet:

9
1

bináris_keresés ()

A bináris_keresés () metódust használják annak megállapítására, hogy a megadott érték szerepel-e az adatszerkezetben, vagy sem. Három érvet fogad el: a kezdő iterátort, a befejező iterátort és a megtalálni kívánt értéket.

A bináris keresés csak rendezett adatstruktúrákon működik. Ezért meg kell hívnia a fajta() módszer először a bináris_keresés () módszer.

Szintaxis:

bináris_keresés (start_iterator, end_iterator, value_to_find)

A következő módszer bemutatása:

rendezés (arr, arr + 5);
bináris_keresés (arr, arr + 5, 2)? cout << "Elem megtalálva": cout << "Elem nem található";
bináris_keresés (arr, arr + 5, 7)? cout << "Elem megtalálva": cout << "Elem nem található";

Kimenet:

Elem megtalálva
Az elem nem található

számol()

A számol() metódus adja vissza a megadott érték előfordulásának számát az adatszerkezetben. Három érv szükséges: a kezdő iterátor, a vég iterátor és a számlálandó érték.

Szintaxis:

count (kezdő_iterátor, vég_iterátor, érték_számig);

Íme egy példa erre a módszerre:

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

Kimenet:

1

Konténerek az STL-ben

A konténerek az objektumok és adatok tárolására szolgáló adatstruktúrák. A vektorok, listák, halmok, várólisták, halmazok és térképek néhány olyan példa, amely adatokat tárol bennük a megadott primitív adattípus szerint. Ezeket a tárolókat úgy használhatja, hogy importálja a megfelelő fejléceket a C ++ fájlba.

A tároló változó inicializálása közben meg kell említenie a primitív adatokat, mint pl int, char, húr benne <> zárójelek.

Fedezzük fel néhány ilyen tárolót részletesebben:

Vektor

A vektorok dinamikus tömbök, amelyek átméretezhetők és rugalmasak a munkához. Amikor beilleszt vagy töröl egy elemet a vektorból, az automatikusan beállítja a vektor méretét. Ez hasonló a ArrayList adatstruktúra Java-ban.

Szintaxis:

#include 
vektor változó_neve;

Íme néhány fontos vektor-módszer:

  1. push_back (érték): Ez a módszer az adatokat hozzáfűzi a vektorhoz.
  2. pop_back (): Ez a módszer eltávolítja az utolsó elemet a vektorból.
  3. beillesztés (index, érték): Ez a módszer új elemeket illeszt be az elem elé a megadott helyre.
  4. méret(): Ez a módszer visszaadja a vektor méretét.
  5. üres(): Ez a módszer ellenőrzi, hogy a vektor üres-e vagy sem.
  6. elülső(): Ez a módszer a vektor első értékét adja vissza.
  7. vissza(): A back metódus a vektor utolsó értékét adja vissza.
  8. itt (index): Ez a módszer visszaadja az értéket a megadott pozícióban.
  9. törlés (index): Az erase módszer eltávolítja az elemeket az adott indexből.
  10. egyértelmű(): Ez a módszer törli a vektor összes elemét.
vektor  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. beszúrás (v. kezdet () + 1, 7);
cout << "Az adott vektor mérete" << v.size () << endl;
if (v.empty ()) {
cout << "A vektor üres" << endl;
} más {
cout << "A vektor nem üres" << endl;
}
cout << "Az első pozícióban lévő elem" << v.front () << endl;
cout << "Az elem az utolsó pozícióban" << v.back () << endl;
cout << "Az elem az adott pozícióban" << v.at (4) << endl;
v.erase (v.kezdés () + 1);
for (int i = 0; i cout << v [i] << "";
}

Kimenet:

Az adott vektor mérete 6
A vektor nem üres
Az első pozíció elem 23
Az elem az utolsó pozícióban 5
Elem az adott pozícióban 10
23 12 56 10 5

Sor

A várakozási adatstruktúrában az elemeket hátulról illesztik be, és elölről törlik. Ennélfogva a FIFO ("first in, first out") megközelítést követi.

Szintaxis:

#include 
sor változó_neve;

Íme néhány fontos várakozási mód:

  1. nyomja (érték): Ez a módszer elemeket ad hozzá a sorhoz.
  2. pop(): Ez a módszer törli a sor első elemét.
  3. méret(): Ez a módszer a sor méretét adja vissza.
  4. elülső(): Ez a módszer a sor első elemét adja vissza.
  5. vissza(): Ez a módszer a sor utolsó elemét adja vissza.
sor  q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Az első elem a" << q.front () << endl;
cout << "Az utolsó elem" << q.back () << endl;
cout << "A sor mérete" << q.size () << endl;
q.pop ();
cout << "A várólista összes elemének nyomtatása" << endl;
míg (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Kimenet:

Az első elem 30
Az utolsó elem 70
A sor mérete 5
A várólista összes elemének kinyomtatása
40 50 60 70

Kazal

A rakatkonténerek a LIFO módszerrel működnek. A LIFO azt jelenti, hogy "utolsó be, első ki". Az adatokat ugyanabból a végből tolják és pattogják.

Szintaxis:

#include 
Kazal változó_neve;

Íme néhány fontos verem módszer:

  1. nyomja (érték): Ez a módszer tolja az elemet a verembe.
  2. pop(): Ez a módszer törli a verem legfelső elemét.
  3. top (): Ez a módszer a verembe utoljára beírt elem értékét adja vissza.
  4. méret(): Ez a módszer visszaadja a verem méretét.
  5. üres(): Ez a módszer ellenőrzi, hogy a verem üres-e vagy sem.
verem  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "A verem tetején található" << s.top () << endl;
s.pop ();
cout << "A verem teteje a pop művelet elvégzése után:" << s.top () << endl;
cout << "A verem összes elemének nyomtatása" << endl;
míg (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Kimenet:

A verem teteje 60-at tartalmaz
A verem teteje a pop művelet elvégzése után: 50
A verem összes elemének nyomtatása
50 40 30

Készlet

A készlet tárolókat egyedi értékek tárolására használják, és az elem értéke nem változtatható meg, miután beillesztették a készletbe. A készlet összes elemét rendezett módon tároljuk. A beállított konténer hasonló a állítsa be az adatszerkezetet a Pythonban.

Szintaxis:

#include 
készlet változó_neve;

Íme néhány fontos készletmódszer:

  1. beillesztés (érték): Ez a módszer elemeket illeszt be a készletbe.
  2. kezdődik(): Ez a módszer visszaadja az iterátort a halmaz első eleméhez.
  3. vége (): Ez a módszer visszaadja az iterátort a halmaz utolsó elemére.
  4. méret(): Ez a módszer visszaadja a halmaz méretét.
  5. üres(): Ez a módszer ellenőrzi, hogy a készlet üres-e vagy sem.
  6. megtalálni (érték): Ez a módszer visszaadja az iterátort a paraméterben átadott elemnek. Ha az elem nem található, akkor ez a függvény visszaadja az iterátort a halmaz végére.
  7. törlés (érték): Ez a módszer törölte a megadott elemet a készletből.
halmaz  s;
s.betét (20);
s.betét (30);
s.betét (40);
s.betét (50);
s.betét (60);
s.betét (60);
s.betét (60);
auto i = s.kezdés ();
cout << "Elem az első helyen" << * i << endl;
cout << "A halmaz mérete" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Elem megtalálva" << endl: cout << "Elem nem található" << endl;
s.erase (30);
cout << "Az összes elem nyomtatása" << endl;
for (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Kimenet:

Elem az első helyen 20
A készlet mérete 5
Elem megtalálva
Az összes elem nyomtatása
20 40 50 60

A C ++ -nak nem kell keménynek lennie

Csakúgy, mint minden más készség, a gyakorlat is elengedhetetlen ahhoz, hogy a legtöbbet hozza ki az STL-ből. Ezek a tárolók és algoritmusok sok időt takaríthatnak meg, és egyszerűen használhatók. Kezdje a fenti példák gyakorlásával, és végül elkezdje használni saját projektjeiben is.

Ha azonban most először tanulja meg a C ++ nyelvet, akkor kezdje el az alapok elsajátításával, mielőtt megértené az STL-t.

Email
A C ++ programozás elsajátítása: 6 webhely az induláshoz

Szeretne megtanulni C ++ nyelvet? Itt vannak a legjobb webhelyek és online tanfolyamok a C ++ programhoz kezdőknek és tapasztalt programozóknak egyaránt.

Olvassa el a következőt

Kapcsolódó témák
  • Programozás
  • Kódolási oktatóanyagok
  • Funkcionális programozás
A szerzőről
Nitin Ranganath (22 cikk megjelent)

Nitin lelkes szoftverfejlesztő és számítástechnikai hallgató, aki JavaScript-technológiákat használó webalkalmazásokat fejleszt. Szabadúszó webfejlesztőként dolgozik, és szabadidejében szeret írni a Linux és a Programozás számára.

Több Nitin Ranganath-tól

Iratkozzon fel hírlevelünkre

Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!

Még egy lépés…!

Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.

.