VMS Help
CXXLSTD, Algorithms, replace

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   replace  - Substitutes elements stored in a collection with new
   values.

 SYNOPSIS

   #include <algorithm>

   template <class ForwardIterator, class T>
   void replace (ForwardIterator	first,
 	       ForwardIterator last,
 	       const T&	old_value,
 	       const T&	new_value);

 DESCRIPTION

   The replace algorithm	replaces elements referred to by iterator i in
   the range	[first,	last) with new_value when the following
   condition holds:  *i == old_value

 COMPLEXITY

   Exactly last - first	comparisons or applications of the
   corresponding predicate are	done.

 EXAMPLE

   //
   // replace.cpp
   //
    #include <algorithm>
    #include <vector>
    #include <iterator>
    #include <iostream.h>

   template<class Arg>
   struct all_true : public unary_function<Arg, bool>
    {
     bool operator()(const Arg&){ return	1; }
    };

   int main()
    {

      //Initialize a vector with	an array of integers
     int	arr[10]	= {1,2,3,4,5,6,7,8,9,10};
     vector<int>	v(arr, arr+10);

      //Print out original vector
     cout << "The original list:	" << endl << "	   ";
     copy(v.begin(),v.end(),ostream_iterator<int,char>(cout," "));
     cout << endl << endl;

      //Replace the number 7 with 11
      replace(v.begin(),	v.end(), 7, 11);

      //	Print out vector with 7	replaced,
      //	s.b. 1 2 3 4 5 6 11 8 9	10
     cout << "List after	replace	" << endl << "	   ";
     copy(v.begin(),v.end(),ostream_iterator<int,char>(cout," "));
     cout << endl << endl;

      //Replace 1 2 3 with 13 13	13
     replace_if(v.begin(), v.begin()+3, all_true<int>(),	13);

      //	Print out the remaining	vector,
      //	s.b. 13	13 13 4	5 6 11 8 9 10
     cout << "List after	replace_if " <<	endl <<	"     ";
     copy(v.begin(),v.end(),ostream_iterator<int,char>(cout," "));
     cout << endl << endl;

     return 0;
    }

   Output :
   The original list:
       1	2 3 4 5	6 7 8 9	10
   List after replace:
       1	2 3 4 5	6 11 8 9 10
   List after replace_if:
       13 13 13 4 5 6 11	8 9 10
   List using replace_copy to cout:
       17 17 17 4 5 6 11	8 9 10
   List with all	elements output	as 19s:
       19 19 19 19 19 19	19 19 19 19

 WARNING

   If your compiler does	not support default template parameters, then
   you need to always supply	the Allocator template argument.  For
   instance,	you will need to write :

   vector<int, allocator<int> >

   instead of :

   vector<int>

 SEE ALSO

   replace_if, replace_copy, replace_copy_if

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help