The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

replace_copy (3)
  • >> replace_copy (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         replace_copy
    
          - Substitutes elements in a collection with new values, and
         moves the revised sequence into result.
    
    
    
    SYNOPSIS
         #include <algorithm>
         template <class InputIterator,
                  class OutputIterator,
                  class T>
         OutputIterator replace_copy (InputIterator first,
                                     InputIterator last,
                                     OutputIterator result,
                                     const T& old_value,
                                     const T& new_value);
    
    
    
    DESCRIPTION
         The replace_copy  algorithm  leaves  the  original  sequence
         intact  and places the revised sequence into result. For the
         range  [first,  last),  the  algorithm   compares   elements
         referred  to  by  iterator  i with old_value. If *i does not
         equal   old_value,   then   replace_copy   copies   *i    to
         result+(first-i). If *i==old_value, then replace_copy copies
         new_value   to   result+(first-i).   replace_copy    returns
         result+(last-first).
    
    
    
    COMPLEXITY
         Exactly last - first comparisons between values are done.
    
    
    
    EXAMPLE
         //
         // replace.cpp
         //
          #include <algorithm>
          #include <vector>
          #include <iterator>
          #include <iostream>
         using namespace std;
    
         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+0, 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.
            //
           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.
            //
           cout << "List after replace_if:" << endl << "     ";
           copy(v.begin(), v.end(),
                ostream_iterator<int,char>(cout," "));
           cout << endl << endl;
            //
            // Replace those 13s with 17s on output.
            //
           cout << "List using replace_copy to cout:" << endl
                 << "     ";
    
            replace_copy(v.begin(), v.end(),
                            ostream_iterator<int,char>(cout, " "),
                         13, 17);
           cout << endl << endl;
            //
            // A simple example of replace_copy_if.
            //
           cout << "List w/ all elements output as 19s:" << endl
                << "   ";
           replace_copy_if(v.begin(),          v.end(),          <br>
           ostream_iterator<int,char>(cout, " "),
                           all_true<int>(), 19);
           cout << endl;
    
           return 0;
          }
    
         Program 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
    
    
    
    WARNINGS
         If your compiler does not support default  template  parame-
         ters,  then you always need to supply the Allocator template
         argument. For instance, you need to write:
    
         vector<int, allocator<int> >
    
         instead of:
    
         vector<int>
    
         If your compiler does not support namespaces,  then  you  do
         not need the using declaration for std.
    
    
    
    SEE ALSO
         replace, replace_if, replace_copy_if
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру