//: C07:ListStability.cpp {-bor}
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
// Kolem seznamů se nic nepřesouvá.
//{L} Noisy
#include <algorithm>
#include <iostream>
#include <iterator>
#include <list>
#include "Noisy.h"
using namespace std;

int main() {
  list<Noisy> l;
  ostream_iterator<Noisy> out(cout, " ");
  generate_n(back_inserter(l), 25, NoisyGen());
  cout << "\n Tisk seznamu:" << endl;
  copy(l.begin(), l.end(), out);
  cout << "\n Invertování seznamu:" << endl;
  l.reverse();
  copy(l.begin(), l.end(), out);
  cout << "\n Třídění seznamu list:" << endl;
  l.sort();
  copy(l.begin(), l.end(), out);
  cout << "\n Výměna dvou prvků:" << endl;
  list<Noisy>::iterator it1, it2;
  it1 = it2 = l.begin();
  ++it2;
  swap(*it1, *it2);
  cout << endl;
  copy(l.begin(), l.end(), out);
  cout << "\n Použití obecné funkce reverse(): " << endl;
  reverse(l.begin(), l.end());
  cout << endl;
  copy(l.begin(), l.end(), out);
  cout << "\n Úklid" << endl;
} ///:~
