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 »;

}

 

 

0 réponses

Laisser un commentaire

Rejoindre la discussion?
N'hésitez pas à contribuer !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.