Rechercher
 

Fonction std::fill

Entête à inclure

#include <algorithm>

Fonction std::fill

template <typename IT, typename TYPE>
void std::fill( IT begin, IT end, const TYPE & value );

La fonction générique std::fill permet d'affecter une même valeur à tous les éléments compris entre les deux itérateurs passés en paramètres. Ces deux itérateurs doivent, bien entendu, être basés sur une même collection. Par l'aspect générique de cette fonction, elle peut être utilisées sur tous types de collections comptatibles avec le modèle STL (std::array, std::vector, std::list, ...).

Paramètres

  • begin : un itérateur qui cible le premier élément de la collection à affecter à la valeur considérée.
  • end : un itérateur placé après le dernier élément de la collection à affecter à la valeur considérée.
  • value : la valeur à affecter.

Valeur de retour

Cette fonction ne renvoie aucune information.

Exemple de code

#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <string>

using namespace std;

/* std::fill implementation is like this.

template <typename IT, typename TYPE>
inline void fill2( IT current, IT end, const TYPE & value ) {
    while( current != end ) {
        *current ++ = value;
    }
}

*/

#define SIZE 10


int main() {

    array<string, SIZE> collection;
    fill( collection.begin(), collection.end(), "uninitialized" );

    copy( collection.begin(), collection.end(), 
          ostream_iterator<string>( cout, "\n" ) );
    
    return 0;
}

ATTENTION : cet exemple utilise une nouveauté introduite avec la version 2011 du standard C++ (la classe std::array). Avec la chaine de compilation g++, il est donc nécessaire d'ajouter l'option -std=c++11 pour correctement compiler cet exemple. Voici les résultats produits par l'exemple précédent.

$> g++ -o Sample Sample.c -std=c++11
$> ./Sample
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
uninitialized
$>

Sujets connexes