Vectorii sunt la fel ca și matricele dinamice, având capacitatea de a se redimensiona automat atunci când un element este inserat sau șters, stocarea lor fiind gestionată automat de container. Elementele vectoriale sunt plasate în stocare contiguă, astfel încât să poată fi accesate și traversate folosind iteratoare. În vectori, datele sunt inserate la sfârșit. Inserarea la sfârșit necesită timp diferențial, deoarece uneori matricea poate fi nevoie să fie extinsă. Eliminarea ultimului element durează doar timp constant, deoarece nu are loc nicio redimensionare. Inserarea și ștergerea la început sau la mijloc este liniară în timp.
Ce este std::vector în C++?
std::vector în C++ este șablonul de clasă care conține containerul vectorial și funcțiile sale membre. Este definit în interiorul fișier antet. Funcțiile membre ale clasei std::vector oferă diverse funcționalități containerelor vectoriale.
Sintaxă pentru declararea vectorului în C++
std::vector vectorName;>
unde tipul de date este tipul de date al fiecărui element al vectorului. Puteți elimina std:: dacă ați folosit deja spațiul de nume std.
Inițializarea Vectorului în C++
Putem inițializa un vector în următoarele moduri:
1. Inițializarea utilizând Lista
Această inițializare se face cu o declarație. Aici, trecem lista de elemente constructorului vectorial pentru a crea un vector cu elementele specificate.
vector name({ value1, value2, value3 .... });>
2. Inițializare Cu o singură valoare
Această inițializare se face și cu declarație. Aici, specificăm dimensiunea vectorului și apoi inițializam fiecare element al vectorului cu valoarea.
vector name(size, value);>
3. Inițializare dintr-un alt vector
Această inițializare este folosită pentru a crea un vector care este o copie exactă a lui other_vec.
vector name(other_vec);>
Unele funcții membre utilizate în mod obișnuit ale clasei std::vector sunt scrise mai jos:
Iteratori
- ÎNCEPE() – Returnează un iterator care indică primul element din vector
- Sfârşit() – Returnează un iterator care indică elementul teoretic care urmează ultimul element din vector
- rbegin() – Returnează un iterator invers care indică ultimul element din vector (început invers). Se deplasează de la ultimul la primul element
- face() – Returnează un iterator invers care indică elementul teoretic care precede primul element din vector (considerat ca capăt invers)
- cbegin() – Returnează un iterator constant care indică primul element din vector.
- câțiva() – Returnează un iterator constant care indică elementul teoretic care urmează ultimul element din vector.
- crbegin() – Returnează un iterator invers constant care indică ultimul element din vector (început invers). Se deplasează de la ultimul la primul element
- crend() – Returnează un iterator invers constant care indică elementul teoretic care precede primul element din vector (considerat ca capăt invers)
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;>>> for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Output of begin and end: '> ;> > for> (> auto> i = g1.begin(); i != g1.end(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of cbegin and cend: '> ;> > for> (> auto> i = g1.cbegin(); i != g1.cend(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of rbegin and rend: '> ;> > for> (> auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> > cout << *ir <<> ' '> ;> > > cout <<> '
Output of crbegin and crend : '> ;> > for> (> auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> > cout << *ir <<> ' '> ;> > > return> 0;> }> |
>
>Ieșire
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
Capacitate
- mărimea() – Returnează numărul de elemente din vector.
- max_size() – Returnează numărul maxim de elemente pe care le poate conține vectorul.
- capacitate() – Returnează dimensiunea spațiului de stocare alocat în prezent vectorului, exprimată ca număr de elemente.
- redimensiona(n) – Redimensionează containerul astfel încât să conțină „n” elemente.
- gol() – Returnează dacă containerul este gol.
- shrink_to_fit() – Reduce capacitatea containerului pentru a se potrivi dimensiunilor sale și distruge toate elementele peste capacitate.
- rezervă() – Solicită ca capacitatea vectorului să fie cel puțin suficientă pentru a conține n elemente.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;>>> for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Size : '> << g1.size();> > cout <<> '
Capacity : '> << g1.capacity();> > cout <<> '
Max_Size : '> << g1.max_size();> > > // resizes the vector size to 4> > g1.resize(4);> > > // prints the vector size after resize()> > cout <<> '
Size : '> << g1.size();> > > // checks if the vector is empty or not> > if> (g1.empty() ==> false> )> > cout <<> '
Vector is not empty'> ;> > else> > cout <<> '
Vector is empty'> ;> > > // Shrinks the vector> > g1.shrink_to_fit();> > cout <<> '
Vector elements are: '> ;> > for> (> auto> it = g1.begin(); it != g1.end(); it++)> > cout << *it <<> ' '> ;> > > return> 0;> }> |
>
citiți din fișierul csv în java
>Ieșire
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Acces la elemente
- operator de referință [g] – Returnează o referință la elementul din poziția „g” în vector
- la(g) – Returnează o referință la elementul din poziția „g” în vector
- față() – Returnează o referință la primul element din vector
- înapoi() – Returnează o referință la ultimul element din vector
- C++
// C++ program to illustrate the>
// element access in vector>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
vector<>
int>
>g1;>>>
> for>
(>
int>
i = 1; i <= 10; i++)>
>
g1.push_back(i * 10);>
>
>
cout <<>
' Reference operator [g] : g1[2] = '>
<< g1[2];>
>
>
cout <<>
' at : g1.at(4) = '>
<< g1.at(4);>
>
>
cout <<>
' front() : g1.front() = '>
<< g1.front();>
>
>
cout <<>
' back() : g1.back() = '>
<< g1.back();>
>
>
// pointer to the first element>
>
int>
* pos = g1.data();>
>
>
cout <<>
' The first element is '>
<< *pos;>
>
return>
0;>
}>
>
>
IeșireReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modificatori
- atribui() – Atribuie o nouă valoare elementelor vectoriale prin înlocuirea celor vechi
- împinge înapoi() – Împinge elementele într-un vector din spate
- pop_back() – Este folosit pentru a scoate sau elimina elemente dintr-un vector din spate.
- introduce() – Inserează elemente noi înaintea elementului în poziția specificată
- şterge() – Este folosit pentru a îndepărta elemente dintr-un container din poziția sau intervalul specificat.
- swap() – Este folosit pentru a schimba conținutul unui vector cu un alt vector de același tip. Dimensiunile pot diferi.
- clar() – Este folosit pentru a elimina toate elementele containerului vector
- plasează() – Extinde containerul prin introducerea unui nou element în poziție
- plasează_înapoi() – Este folosit pentru a introduce un nou element în containerul vector, noul element este adăugat la sfârșitul vectorului
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>în;>>>
> // fill the vector with 10 five times>
>
v.assign(5, 10);>
>
>
cout <<>
'The vector elements are: '>
;>
>
for>
(>
int>
i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector
v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> >
>
încapsulare java
IeșireThe vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
Complexitatea timpului pentru efectuarea diferitelor operații pe vectori este-
- Acces aleator – constantă O(1)
- Introducerea sau îndepărtarea elementelor la capăt – constantă O(1)
- Inserarea sau îndepărtarea elementelor – liniară pe distanța până la capătul vectorului O(N)
- Cunoscând dimensiunea – constantă O(1)
- Redimensionarea vectorului - Linear O(N)
Toate funcțiile membre ale std::vector
Mai jos este lista tuturor funcțiilor membre ale clasei std::vector în C++:
Funcție vectorială
Descriere
Adaugă un element la sfârșitul vectorului. Îndepărtează ultimul element al vectorului. Returnează numărul de elemente din vector. max_size()
Returnează numărul maxim de elemente pe care vectorul le poate conține. redimensiona()
Modifică dimensiunea vectorului. Verifică dacă vectorul este gol. operator[]
Accesează elementul într-o anumită poziție. la()
Accesează elementul într-o anumită poziție, cu verificarea limitelor. față()
Accesează primul element al vectorului. înapoi()
Accesează ultimul element al vectorului. ÎNCEPE()
Returnează un iterator care indică primul element al vectorului. Sfârşit()
Returnează un iterator care indică elementul trecut-sfârșitul vectorului. rbegin()
Returnează un iterator invers care indică ultimul element al vectorului. face()
Returnează un iterator invers care indică elementul care precede primul element al vectorului. cbegin
Returnează const_iterator la început câțiva
Returnează const_iterator la final crbegin
Returnează const_reverse_iterator la început invers crede
Returnează const_reverse_iterator la sfârșitul invers Inserează elemente într-o anumită poziție în vector. Îndepărtează elemente dintr-o anumită poziție sau domeniu în vector. swap()
Schimbă conținutul vectorului cu cel al altui vector. imagini de reducere
Îndepărtează toate elementele din vector. plasează()
Construiește și inserează un element în vector. plasează_înapoi()
Construiește și inserează un element la sfârșitul vectorului. atribui()
Atribuie valori noi elementelor vectoriale prin înlocuirea celor vechi. capacitate()
Returnează dimensiunea spațiului de stocare alocat în prezent vectorului. rezervă()
Solicită ca capacitatea vectorului să fie cel puțin suficientă pentru a conține un număr specificat de elemente. shrink_to_fit()
Reduce utilizarea memoriei prin eliberarea spațiului nefolosit. get_allocator
Returnează o copie a obiectului alocător asociat vectorului. Trebuie citit:
- Cum se verifică dacă un vector conține un element dat în C++?
- Cum să găsiți indexul unui element dat într-un vector în C++
- Sortarea unui vector în C++