С++ для начинающих


Алгоритм fill()


template< class ForwardIterator, class Type >

void

fill( ForwardIterator first,

      ForwardIterator last, const Type& value );

fill() помещает копию значения value в каждый элемент диапазона, ограниченного парой итераторов [first,last).

#include <algorithm>

#include <list>

#include <string>

#include <iostream.h>

/* печатается:

   исходная последовательность элементов массива:

   0 1 1 2 3 5 8

   массив после fill(ia+1,ia+6):



   0 9 9 9 9 9 8

   исходная последовательность элементов списка:

   c eiffel java ada perl

   список после fill(++ibegin,--iend):

   c c++ c++ c++ perl

*/

          

int main()

{

   const int value = 9;

   int ia[]  = { 0, 1, 1, 2, 3, 5, 8 };

   ostream_iterator< int > ofile( cout, " " );

   cout << "исходная последовательность элементов массива:\n";

   copy( ia, ia+7, ofile ); cout << "\n\n";

                 

   fill( ia+1, ia+6, value );

   cout << "массив после fill(ia+1,ia+6):\n";

   copy( ia, ia+7, ofile ); cout << "\n\n";

   string the_lang( "c++" );

   string langs[5] = { "c", "eiffel", "java", "ada", "perl" };

   list< string, allocator > il( langs, langs+5 );

   ostream_iterator< string > sofile( cout, " " );

   cout << "исходная последовательность элементов списка:\n";

   copy( il.begin(), il.end(), sofile ); cout << "\n\n";

   typedef list<string,allocator>::iterator iterator;

   iterator ibegin = il.begin(), iend = il.end();

   fill( ++ibegin, --iend, the_lang );

   cout << "список после fill(++ibegin,--iend):\n";

   copy( il.begin(), il.end(), sofile ); cout << "\n\n";

}



Содержание раздела