STL - Concetti Fondamentali

Inizio a leggere Designing Components with the C++ STL, di Ulrich Breymann, che mi sembra un buon libro per rivedersi la STL. A seguire alcune note relative.

I più importanti elementi della STL sono contenitori, iteratori e algoritmi.

I contenitori rendono disponibili iteratori, che sono usati dagli algoritmi.

Nel paragrafo 1.3.4 Breymann ci mostra un piccolo esempio che mostra questa interazione.

Nel libro si inizia da una piccola applicazione che non usa la STL e si modifica a poco a poco il codice per renderlo più generico e adattabile al cambiamento.

Il senso del codice é quello di confrontare l'input fornito dall'utente con un array contenente i primi cento numeri pari, ovvero da 0 a 198. Se il numero passato é nell'array si comunica all'utente a che indice é stato trovato. Per terminare l'esecuzione si immette un non-numero.

Il container utilizzato é un vector, i cui iteratori sono passati all'algoritmo find.

Il codice risultante, applicando anche l'ultimo passo che nel testo é lasciato al lettore, e con qualche piccolo cambiamento aggiuntivo dovuto ai gusti personali, é il seguente:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
const int COUNT = 100;
vector<int> aVector(COUNT);

// fill container with even numbers
for (int i = 0; i < COUNT; ++i)
aVector[i] = 2 * i;

while (true) {
string buffer;
cout << "Enter required number: ";
cin >> buffer;

if(isdigit(buffer[0])) {
int number = atoi(buffer.c_str());

vector<int>::iterator position = find(aVector.begin(), aVector.end(), number);
if (position != aVector.end())
cout << "found: " << (position - aVector.begin()) << endl;
else
cout << number << " not found!" << endl;
}
else
return 0;
}
}

Nessun commento:

Posta un commento