STD::array v C++
Pole je kolekcia homogénnych objektov a tento kontajner poľa je definovaný pre polia konštantnej veľkosti alebo (statická veľkosť). Tento kontajner sa obalí okolo polí s pevnou veľkosťou a informácie o jeho veľkosti sa pri deklarácii do ukazovateľa nestratia.
Aby sme mohli využívať polia, musíme zahrnúť hlavičku poľa:
#include
Pozrime sa na príklad.
CPP
// CPP program to demonstrate working of array> #include> #include> #include> #include> #include> using> namespace> std;> int> main() {> > // construction uses aggregate initialization> > // double-braces required> > array <> int> , 5>alebo 1{{3, 4, 5, 1, 2}};> > array <> int> , 5>ar2 = {1, 2, 3, 4, 5};> > array ar3 = {{string(> 'a'> ),> 'b'> }};> > cout < <> 'Sizes of arrays are'> < < endl;> > cout < < ar1.size() < < endl;> > cout < < ar2.size() < < endl;> > cout < < ar3.size() < < endl;> > > cout < <> '
Initial ar1 : '> ;> > for> (> auto> i : ar1)> > cout < < i < <> ' '> ;> > // container operations are supported> > sort(ar1.begin(), ar1.end());> > cout < <> '
sorted ar1 : '> ;> > for> (> auto> i : ar1)> > cout < < i < <> ' '> ;> > // Filling ar2 with 10> > ar2.fill(10);> > cout < <> '
Filled ar2 : '> ;> > for> (> auto> i : ar2)> > cout < < i < <> ' '> ;> > // ranged for loop is supported> > cout < <> '
ar3 : '> ;> > for> (> auto> &s : ar3)> > cout < < s < <> ' '> ;> > return> 0;> }> |
Výkon:
Sizes of arrays are 5 5 2 Initial ar1 : 3 4 5 1 2 sorted ar1 : 1 2 3 4 5 Filled ar2 : 10 10 10 10 10 ar3 : a b
Toto pole C++ STL je druh sekvenčného kontajnera a nepoužíva sa extrémne v bežnom programovaní alebo v konkurenčnom programovaní, ale niekedy mu jeho členská funkcia poskytuje hornú hranicu oproti bežnému normálnemu poľu, ktoré používame v našom každodennom živote. Takže diskutujeme o niektorých dôležitých členských funkciách, ktoré sa používajú s takýmto druhom poľa:
Členské funkcie pre šablónu poľa sú nasledovné:
Syntax: pole názov_pola;
a) [ ] Prevádzkovateľ : Toto je podobné normálnemu poľu, používame ho na prístup k úložisku prvkov v indexe „i“.
napr.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> char> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> > cout < ' ' < return 0; }> |
Výkon
G G
b) funkcia predná ( ) a zadná ( ): Tieto metódy sa používajú na priamy prístup k prvému a poslednému prvku poľa.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> // ASCII val of 'G' =71> > cout < ' ' < return 0; }> |
Výkon
71 71
c) funkcia swap( ): Táto funkcia swap sa používa na výmenu obsahu dvoch polí.
napr.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> // ASCII val of 'G' =71> > array <> int> , 3>arr1={> 'M'> ,> 'M'> ,> 'P'> };> // ASCII val of 'M' = 77 and 'P' = 80> > arr.swap(arr1);> // now arr = {M,M,P}> > cout < ' ' < return 0; }> |
Výkon
77 80
d) funkcia empty( ): Táto funkcia sa používa na kontrolu, či je deklarované pole STL prázdne alebo nie, ak je prázdne, vráti true else false.
napr.:
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> // ASCII val of 'G' =71> > array <> int> , 3>arr1={> 'M'> ,> 'M'> ,> 'P'> };> // ASCII val of 'M' = 77 and 'P' = 80> > bool> x = arr.empty();> // false ( not empty)> > cout < return 0; }> |
Výkon
false
e) funkcia at( ): Táto funkcia sa používa na prístup k prvku uloženému na konkrétnom mieste, ak sa pokúsime získať prístup k prvku, ktorý je mimo veľkosti poľa, vyvolá výnimku.
napr.:
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> // ASCII val of 'G' =71> > array <> int> , 3>arr1={> 'M'> ,> 'M'> ,> 'P'> };> // ASCII val of 'M' = 77 and 'P' = 80> > cout < < arr.at(2) < <> ' '> < < arr1.at(2);> > //cout < < arr.at(3); // exception{Abort signal from abort(3) (SIGABRT)}> > return> 0;> }> |
Výkon
71 80
f) funkcia fill( ): Toto sa špeciálne používa na inicializáciu alebo vyplnenie všetkých indexov poľa podobnou hodnotou.
napr.:
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 5>arr;> > arr.fill(1);> > for> (> int> i: arr)> > cout < ' '; return 0; }> |
Výkon
1 1 1 1 1
g) funkcia size() alebo max_size() a sizeof(): Size() aj max_size() sa používajú na získanie maximálneho počtu indexov v poli, zatiaľ čo sizeof() sa používa na získanie celkovej veľkosti poľa v bajtoch.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 10>arr;> > cout < '
'; // total num of indexes cout < '
'; // total num of indexes cout < |
Výkon
10 10 40
h) údaje ( ): Táto funkcia vráti ukazovateľ na prvý prvok objektu poľa. Pretože prvky v poli sú uložené v súvislých pamäťových miestach. Táto funkcia data() nám vracia základnú adresu objektu typu reťazec/znak.
napr.
C++
#include> #include> #include> using> namespace> std;> int> main ()> {> > const> char> * str => 'techcodeview.com'> ;> > array <> char> ,13>arr;> > memcpy> (arr.data(),str,13);> > cout < < arr.data() < <> '
'> ;> > return> 0;> }> |
techcodeview.com
I) cbegin() a cend(): prejdite na tento odkaz gfg: Klikni na mňa