STD::array v C++
Pole je kolekce homogenních objektů a tento kontejner pole je definován pro pole konstantní velikosti nebo (statická velikost). Tento kontejner obtéká pole pevné velikosti a informace o jeho velikosti se při deklaraci do ukazatele neztratí.
Abychom mohli využívat pole, musíme zahrnout záhlaví pole:
#include
Podívejme se na pří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>nebo 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ýstup:
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 kontejneru a nepoužívá se extrémně v běžném programování nebo v konkurenčním programování, ale někdy mu jeho členská funkce poskytuje horní okraj oproti běžnému normálnímu poli, které používáme v našem každodenním životě. Diskutujeme tedy o některých důležitých členských funkcích, které se používají s takovým typem pole:
Členské funkce pro šablonu pole jsou následující:
Syntaxe: pole název_pole;
a) [ ] Provozovatel : Toto je podobné normálnímu poli, používáme ho pro přístup k úložišti prvků na indexu ‚i‘ .
Příklad:
C++
#include> #include> using> namespace> std;> int> main() {> > array <> char> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> > cout < ' ' < return 0; }> |
Výstup
G G
b) funkce přední ( ) a zadní ( ): Tyto metody se používají pro přímý přístup k prvnímu a poslednímu prvku pole.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 3>arr={> 'G'> ,> 'f'> ,> 'G'> };> // ASCII val of 'G' =71> > cout < ' ' < return 0; }> |
Výstup
71 71
c) funkce swap( ): Tato funkce swap se používá k prohození obsahu dvou polí.
Příklad:
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ýstup
77 80
d) funkce empty( ): Tato funkce se používá ke kontrole, zda je deklarované pole STL prázdné nebo ne, pokud je prázdné, vrací true else false.
Příklad:
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ýstup
false
e) funkce at(): Tato funkce se používá pro přístup k prvku uloženému na konkrétním místě, pokud se pokusíme o přístup k prvku, který je mimo rozsah velikosti pole, vyvolá výjimku.
Příklad:
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ýstup
71 80
f) funkce fill(): To se speciálně používá k inicializaci nebo vyplnění všech indexů pole podobnou hodnotou.
Příklad:
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 5>arr;> > arr.fill(1);> > for> (> int> i: arr)> > cout < ' '; return 0; }> |
Výstup
1 1 1 1 1
g) funkce size() nebo max_size() a sizeof(): Jak size() tak max_size() se používají k získání maximálního počtu indexů v poli, zatímco sizeof() se používá k získání celkové velikosti pole v bajtech.
C++
#include> #include> using> namespace> std;> int> main() {> > array <> int> , 10>arr;> > cout < '
'; // total num of indexes cout < '
'; // total num of indexes cout < |
Výstup
10 10 40
h) údaje(): Tato funkce vrací ukazatel na první prvek objektu pole. Protože prvky v poli jsou uloženy v souvislých paměťových místech. Tato funkce data() nám vrací základní adresu objektu typu řetězec/znak.
Příklad:
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(): přejděte na tento odkaz gfg: Klikni na mě