Un vector è una struttura dati con accesso diretto ed è una tra le strutture più utilizzate quando programmiamo. In C++ uno degli errori più commessi e "sottili" è fondere i due possibili usi del nostro vettore
Esso, infatti, può essere utilizzato in modo STL o in modo array. Il modo STL (Standard Template Library), permette di inserire valori mediante la funzione push_back( ), definire un vettore senza specificarne la dimensione e molto altro. Se usiamo un vettore in "stile array" lo trattiamo praticamente come un array normale e dunque specificando la dimensione, eventualmente gli elementi contenuti, accedendo in modo diretto alla posizione 'i' del vettore ecc. Ovviamente si possono usare i due metodi assieme, ma molte volte attuare questa soluzione può confondere le idee. Ammettiamo di dover dichiarare un vector di interi in stile array con 10 elementi:
vector<int>v (10);
Nel corso del programma vorremmo aggiungere un elemento, o comunque impostarlo a un certo valore. La soluzione più banale sarebbe:
v[pos]=valore;
Trattando il nostro vettore come un array e fin qui tutto ok. Ma se ci venisse in mente di scrivere:
v.push_back(valore)
for (int i=0;i<10;i++)
v.push_back(i);
applicato sul vettore dichiarato prima, v, noi otterremmo un vettore di ben 20 elementi, avente i valori inseriti mediante il push_back a partire dall'indice 10!
Anche se può sembrare banale è sempre meglio controllare la dichiarazione di un vettore e il suo utilizzo in tutto il programma, per evitare inserimenti spiacevoli.
Nessun commento:
Posta un commento