Boost et STL
Librairie Boost
Nous commençons avec une introduction à la STL (Standard Template Library), ce que l’on appelle collection en C++. C’est le pain et le beurre du programmeur. La STL offre un ensemble de container et d’algorithmes. Le cœur de la STL est le concept iterator qui permet de traverser la collection. La STL a été designé pour être utilisé avec un style de programmation appelé «programmation générique» mieux connu sous le nom de Template en C++. Ceci permet de traiter le type de data du container de façon transparente.
Ci-dessous un exemple simple de l’utilisation de la STL et de Boost. Nous avons deux functions qui permettent d’imprimer le contenu d’une collection
template<typenameRange>void printRange( const Range& aRange){
std::cout << « We are printing the range\n »; typedef boost::range_iterator<Range>::type iter_type; typedef std::iterator_traits<iter_type>::value_type value_type; std::copy( boost::begin(aRange), boost::end(aRange), std::ostream_iterator<value_type>(std::cout,« \n »)); } |
La meme fonction mais en utilisant la Standard template Library (STL)
template<typenameCONT> // containervoid print_container( constCONT& aCont2Print){
// typename because CONT is a argument template // we have to give an hint to the compiler typedeftypenameCONT::value_type ctype; // define an iterator and a const iterator typedef typename CONT::iterator iter_range; typedef typename CONT::const_iterator citer_range; // initialize range iterators citer_rangew_beg = aCont2Print.begin(); citer_rangew_end = aCont2Print.end(); std::copy(w_beg,w_end, std::ostream_iterator<ctype>(std::cout, » « )); std::cout << « \n »; } |
Â
Laisser un commentaire
Rejoindre la discussion?N’hésitez pas à contribuer !