Sunteți pe pagina 1din 2

Vectori din STL

În programa de liceu sunt prezenți vectorii clasici (statici) care se declară de forma
int a[10];
Aceștia au două inconveniente destul de mari:
1) Nu se pot declara variabil (dacă declarați int a[n] unde n are o anumită valoare, este
greșit)
2) Nu pot fi întorși ca rezultat dintr-o funcție.

Există setul de librării STL care implementează vectorii ceva mai eficient.
Pentru asta trebuie inclus
#include<vector>
!! din păcate NU sunt în programa școlară și nici de bac/admiteri!!

Operațiile cu acest tip de vector


 Declararea:
vector<tipul_elementelor> nume_vector;
Ex:
vector<int> a;
Obs: imediat după declarare vectorul este vid (n-are elemente)
 Dimensiunea: câte elemente am pus în momentul curent în vector.
nume_vector.size();
Deci dup declarare, a.size() este 0.
 adăugarea unui element nou la finalul vectorului:
nume_vector.push_back(valoare);
Ex:
a.push_back(5); - dacă a este vid, de fapt se face a[0]=5;
a.push_back(12); - mai adaug un element, deci de fapt se face a[1]=12;
a.push_back(-8); - mai adaug un element, deci de fapt se face a[2]=-8;
cout<<a.size(); //afișează 3
 accesarea unui element (atât pentru atribuire cât și pentru folosire (evaluare)) se face
așa cum știți și de la vectorii clasici:
a[indice]
Ex:
Afișarea:
 redimensionarea vectorului:
a.resize(noua_dimensiune) - dacă noua dimensiune este mai mică decâ cea veche,
elementele se șterg, dacă nu - se adaugă elemente noi, implicit inițializate cu 0.
a.resize(noua_dimensiune,valoare) - la fel ca mai sus, doar că eventualele
elementele noi se inițializează cu valoare în loc de 0.
 ștergerea unui element de la un indice:
a.erase(a.begin()+indice);
 inserarea unui element la un indice - valoarea vine în locul indicelui și toate elementele
de la indice la final se deplasează cu 1 la dreapta.
a.insert(a.begin()+indice,valoare);
Stringuri - din nou vorbim de cele din STL - care nu-s în programa școlară.
un string este aproximativ ca un vector cu elemente de tip char.
Cei din STL pot fi manipulați mult mai ușor decât cei clasici, ei suportând atribuiri,
concatenări cu +, comparații cu <, <=, > etc.

Orice caracter (ca de altfel orice tip de informație) în calculator ajunge sub forma unor
numere.
Setul de bază, și anume caracterele de pe tastatură și altele destul de importante au un
cod definit printr-un standard care se numește
ASCII = American Standard for Character Information Interchange.
Aceste coduri sunt între 0..255, deci se pot reprezenta pe 1 byte (1 octet).
Codurile de la 0 la 127 reprezintă caracterele de bază și pe orice sistem informatic din
lume ele au aceleași reprezentări.
Codurile de la 128 la 255 pot diferi în funcție de setările de limbă.
E important să avem o imagine a acestor coduri.
Le zicem pe cele mai importante:
0..31 - coduri speciale, pot avea diverse funcții (10 - Enter '\n', 08 - Backspace, 27 - codul
ESC)
32 - caracterul spațiu ' '
33..47 - semne: !"#$%&'()*+,-./
48..58 - caracterele cifră: 0123456789 deci atenție, cifra 0 are codul 48, cifra 1 codul 49, etc.
59..64 - semne: ;<=>?@
65..90 - alfabetul englezesc, litere mari: ABCDEFDGHIJKLMNOPQRSTUVWXYZ
91..96 - semne: [\]^_`
97..122 - alfabetul englezesc, litere mici: abcdefdghijklmnopqrstuvwxyz
Obs: în total sunt 26 de litere în alfabetul englezesc

Dacă știm caracterul și vrem să aflăm codul: (int)caracter


Dacă știm codul și vrem să aflăm caracterul: (char)cod

Atribuirile de la variabile int la char sau de la char la int produc automat conversiile, deci
nu mai trebuie specificate.
Ex:
int t='e'-'b'; //de fapt se scad codurile ASCII 3

Citirea unui string de la tastatură:

cin>>s; - dacă se garantează că este un singur cuvând


getline(cin,s); - dacă stringul poate să conțină spații

S-ar putea să vă placă și