Les algorithmes de la librairie standard



Nous présentons ici quelques algorithmes disponibles dans la librairie standard.



copy:

#include <algorithm>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

int main()
{

vector<string> v;
v.push_back("a");
v.push_back("b");

vector<string> v2(10); // attention suffisamment de mémoire doit être allouée dans v2

copy(v.begin() , v.end() , v2.begin());
// on peut même imprimer avec un copy
copy(v2.begin(), v2.end(), ostream_iterator<string>(cout, " "));
cout << endl;

return(0);
}

for_each:

#include <algorithm>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

void f(double a)
{
cout << 2*a << endl;
}

int main()
{
vector<double> v;
v.push_back(1.1);
v.push_back(2.3);


for_each(v.begin(), v.end(), f);

// malheureusement on ne peut pas modifier v avec for_each

return(0);
}

// donc on utilise transform

transform:


#include <algorithm>
#include <string>
#include <iostream>
#include <deque>
#include <iterator>
#include <cmath>


using namespace std;

double f(double a)
{
return 3*a;
}



int main()
{
deque<double> v;
v.push_back(1.);
v.push_back(-2.);
v.push_back(1.5);

sort(v.begin(),v.end()); // on trie par ordre croissant
reverse(v.begin(),v.end()); // on renverse le conteneur

transform(v.begin(), v.end(), v.begin(), f); // on multiplie tout par 3

copy(v.begin(), v.end(), ostream_iterator<double>(cout, "\n"));
// et on écrit le tout

return(0);
}
Drupal 7 Appliance - Powered by TurnKey Linux