Edellisessä esimerkissä stdmap.cpp käytettiin "algoritmia" for_each tulostamaan jokainen alkio. Samoja algoritmeja voidaan käyttää muillekin tietorakenteille. Jopa tavallisille taulukoille:
/* FOREACH.CPP */ // Esimerkki STL:n algoritmien käytöstä, BC 5.00 #include <iostream.h> #include <algorithm> using namespace std; void tulosta_alkio(const int &alkio) { cout << alkio << ' '; } class iotaGen { // Apuluokka lukujonojen muodostamiseksi int current; int step; public: iotaGen(int start=0, int istep=1) : current(start), step(istep) {} int operator () () { int v=current; current += step; return v; } }; int nelio(int n) { return n*n; } #define VIIVA "------------------------------------------------------------\n" /****************************************************************************/ int main(void) { ostream_iterator<int> output(cout," "); // Uusi luokka tulostamista varten cout << VIIVA; int luvut[6] = { 23, 45, 12, 7, 9, 2 }; for_each(luvut,luvut+6,tulosta_alkio); cout << endl;// 23 45 12 7 9 2 cout << "Suurin: " << *max_element(luvut,luvut+6) << endl; // Suurin: 45 fill(luvut+3,luvut+6,175); copy(luvut,luvut+6,output); cout << endl; // 23 45 12 175 175 175 int *p = find(luvut,luvut+6,45); if ( p ) cout << "Löytyi: " << *p << endl; // Löytyi: 45 p = find(luvut,luvut+6,46); if ( p == luvut+6 ) cout << "Ei löytynyt!" << endl; // Ei löytynyt! generate(luvut,luvut+6,iotaGen(10,5)); for_each(luvut,luvut+6,tulosta_alkio); cout << endl;// 10 15 20 25 30 35 reverse(luvut,luvut+6); copy(luvut,luvut+6,output); cout << endl; // 35 30 25 20 15 10 sort(luvut,luvut+6); copy(luvut,luvut+6,output); cout << endl; // 10 15 20 25 30 35 transform(luvut,luvut+6,luvut,nelio); // Tekee jokaiselle alkiolle luvut[i]=nelio(luvut[i]) copy(luvut,luvut+6,output); cout << endl; //100 225 400 625 900 1225 return 0; }