Algorithmen

find :


#include <iostream>
#include <algorithm>   // STL algorithms, find ...
#include <vector>
using namespace std;
int main()
{
  vector<int> vi = { 1, 3, 11, 7, 17 };

  auto where = find(vi.begin(), vi.end(),11);
  // find returns iterator --> pointer-like construct
  cout << *where << endl; // de-reference
};


sort :


#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
  string s = "C++ is the better C";
  vector<char> vec1(s.begin(), s.end()); // copy string chars into vector of chars
  cout << vec1.size() << endl;  // Laenge ausgeben
  sort( vec1.begin(), vec1.end() ); // alphabetisch sortieren von Anfang bis Ende

  for ( auto vc : vec1 ) { 
    cout << vc ; 
  }
  cout << endl; // Zeilenende
}


accumulate : Aufsummieren


#include <numeric>
  ...
  vector<int> vi = { 1, 4, 9, 16, 25 }; // vector mit ints
  int sum = accumulate( vi.begin(), vi.end() , 0);
  ...


reverse : Reihenfolge umdrehen


#include <numeric>
  ...
  string s = "C++ is the better C";
  vector<char> vec1(s.begin(), s.end());
  reverse( vec1.begin(), vec1.end() );
  ...


random_shuffle : in zufällige Reihenfolge bringen


#include <numeric>
  ...
  vector<int> vi = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // vector mit ints
  random_shuffle( vi.begin(), vi.end() ); // in zufaellige Reihenfolge bringen
  ...



copy : Kopieren zwischen Containern


#include <list>
#include <vector>
#include <algorithm>
#include <iterator>
  ...
  string s = "C++ is the better C";
  vector<char> vec1(s.begin(), s.end());
  list<char> list1; // liste mit chars
  copy( vec1.begin(), vec1.end(),  back_inserter(list1) ));
  ...

  back_inserter() ist template–iterator function analog zu push_back()


Iterator/copy Mechanismus sehr flexibel:



  istream_iterator<double> inp(cin);
  istream_iterator<double> eof;
  vector<double> vec2;
  copy( inp, eof, back_inserter(vec2) );


Liest Daten von Standard-Eingabe und packt sie in Vektor (beliebig viele, bis zum end-of-file)

analog die Ausgabe



#include <vector>
#include <iterator>
  ostream_iterator<double> out(cout, "\n" );
  copy( vec2.begin(), vec2.end(), out );