The OpenNET Project / Index page

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

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

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

replace_copy_if (3)
  • >> replace_copy_if (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         replace_copy_if
    
          - Substitutes elements in a collection with new values, and
         moves the revised sequence into result.
    
    
    
    SYNOPSIS
         #include <algorithm>
         template <class InputIterator,
                  class OutputIterator,
                  class Predicate,
                  class T>
         OutputIterator replace_copy_if (InputIterator first,
                                        InputIterator last,
                                        OutputIterator result,
                                        Predicate pred,
                                        const T& new_value);
    
    
    
    DESCRIPTION
         The replace_copy_if algorithm leaves the  original  sequence
         intact  and  places  a revised sequence into result. For the
         range [first,last), the algorithm compares each  element  *i
         with the conditions specified by pred.   If pred(*i)==false,
         replace_copy_if   copies   *i   to   result+(first-i).    If
         pred(*i)==true,   then   replace_copy  copies  new_value  to
         result+(first-i).   replace_copy_if_returns    result+(last-
         first).
    
    
    
    COMPLEXITY
         Exactly last - first applications of the predicate are  per-
         formed.
    
    
    
    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
    
    
    
    


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




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

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