C kezdőknek
C ++ kezdőknek
2.8. A standard tömb vektor
Bár a beépített tömb formálisan és a tároló mechanizmusát biztosítja, a fentiek szerint nem támogatja a konténer absztrakció szemantikáját. Mielőtt elfogadnánk a C ++ szabványt a programozásra ezen a szinten, meg kellett volna szerezni a szükséges osztályt, vagy saját magunkat kellene végrehajtanunk. Most a tömb osztálya a szabványos C ++ könyvtár része. Csak a tömb helyett tömb, hanem tömb.
Természetesen a vektor osztálysablonként működik. Így írhatunk
Az Array osztály sablon végrehajtásának és a vektor sablon végrehajtásának két jelentős különbsége van. Az első különbség az, hogy a vektor támogatást értéket rendelni a meglévő elemek behelyezését és kiegészítő elemek, amelyek dinamikusan növekszik a futás, ha a programozó úgy döntött, hogy ezt a lehetőséget neki. A második különbség sokkal radikálisabb, és a tervezés paradigmájának jelentős változását tükrözi. Ahelyett fenntartani egy nagy sor művelet tagállamokban a vektor, mint például a sort (), min (), max (), meg (), és így tovább, vektor osztály biztosítja a minimális: összehasonlítás művelet az egyenlőség és a kevésbé méret () és üres (). A fentebb felsorolt általánosabb műveletek független, általánosított algoritmusok.
A vektorosztály használatához meg kell adnunk a megfelelő fejlécfájlt.
Akárcsak az Array osztályunk, a vektori osztály támogatja a hozzáférési műveletet index szerint. Íme egy példa arra, hogy átnézzük a vektor összes elemét:
Egy ilyen kereséshez használhatja az iterator pár használatát is. Egy iterátor egy olyan osztály objektuma, amely támogatja az indextípus absztrakcióját. Az osztály a sablon vektor meghatározható két tag funkciók - kezdődik () és vége (), egy iterátor beállítás rendre az első vektor elemet, és egy olyan elemet, következik az utolsó. Ez a két funkció együttesen határozza meg a vektor elemek tartományát. Az iterátor használatával az előző példa átírható az alábbiak szerint:
Az iter változó meghatározása
az iterátort a vektor következő eleméhez mozgatja. Az elem megszerzéséhez a dereferencing műveletet kell alkalmazni:
Ha a sort () algoritmust csak a vektor első felére szeretnénk alkalmazni, írjuk:
Az iterátorpár szerepét egy pár mutatóval játszhatjuk a beépített tömb elemeihez. Legyen például egy tömb:
Rendelje el az egész tömböt a sort () algoritmus meghívásával:
Így megrendelheti az első négy elemet:
Ahhoz, hogy algoritmusokat használhasson a programban, tartalmaznia kell egy fejlécfájlt
Az alábbiakban egy olyan program példája, amely számos algoritmust alkalmaz a vektorobjektumra:
(Osztályok, vektorok, térképek és egyéb konténerek, hogy részletesen a 6. fejezetben Igyekszünk egy olyan rendszer bevezetése szöveges keresés segítségével ezeket az osztályokat. 12. fejezet, úgy a generikus algoritmusok és melléklet példákat azok használatát.)
Ebben a fejezetben a C ++ programozás főbb szempontjait, az adott nyelvre alkalmazott objektumorientált megközelítés alapjait és a szabványos könyvtár használatát nagyon röviden fontolóra vettük. A következő fejezetekben részletesebben és szisztematikusabban tárgyaljuk ezeket a kérdéseket.
2.22 gyakorlat
Magyarázza el az alábbi vektor definíciók eredményeit: