//: C06:Transform.cpp {-mwcc}
// 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.
// Použití STL algoritmu transform().
//{L} Counted
#include <iostream>
#include <vector>
#include <algorithm>
#include "Counted.h"
using namespace std;

template<class T> T* deleteP(T* x) { delete x; return 0; }

template<class T> struct Deleter {
  T* operator()(T* x) { delete x; return 0; }
};

int main() {
  PocitanyVector cv("jedna");
  transform(cv.begin(), cv.end(), cv.begin(),
    deleteP<Pocitana>);
  PocitanyVector cv2("dva");
  transform(cv2.begin(), cv2.end(), cv2.begin(),
    Deleter<Pocitana>());
} ///:~
