Aracılığıyla paylaş


transform

Belirtilen işlev nesnenin kaynak aralıktaki her öğe veya öğeleri çiftinin iki kaynak aralıklardaki uygular ve işlev nesnenin dönüş değerleri hedef aralığına kopyalar.

template<class InputIterator, class OutputIterator, class UnaryFunction>
   OutputIterator transform(
      InputIterator _First1, 
      InputIterator _Last1, 
      OutputIterator _Result,
      UnaryFunction _Func
   );
template<class InputIterator1, class InputIterator2, class OutputIterator,
   class BinaryFunction>
   OutputIterator transform(
      InputIterator1 _First1, 
      InputIterator1 _Last1,
      InputIterator2 _First2, 
      OutputIterator _Result,
      BinaryFunction _Func
   );

Parametreler

  • _First1
    İlk kaynak aralığındaki üzerinde işletilen ilk öğenin konumunu adresleme giriş Yineleyici.

  • _Last1
    Giriş Yineleyici konumu ilk kaynak aralığındaki son öğe geçmiş adresleme üzerinde çalışırdı.

  • _First2
    İkinci kaynak aralığındaki üzerinde işletilen ilk öğenin konumunu adresleme giriş Yineleyici.

  • _Result
    Hedef aralıkta ilk öğenin konumunu adresleme çıktı Yineleyici.

  • _Func
    İlk kaynak aralığındaki her öğeye uygulanan algoritması ilk sürümünde kullanılan tekli kullanıcı tanımlı işlev veya ikili, iki kaynak aralığı için bir ileriye doğru sırayla uygulanan algoritma ikinci sürümü kullanılan bir kullanıcı tanımlı (ud) ikili işlevi nesne.

Dönüş Değeri

Çıkış Yineleyici position işlevi nesnesi tarafından dönüştürülmüş çıktı öğeleri alma hedef aralıktaki son öğe geçmiş adresleme.

Notlar

Başvurduğu aralıkların geçerli olması gerekir; Tüm işaretçiler dereferenceable ve her sıra içinde son konuma birinciden erişilebilmelidir tarafından incrementation. Hedef aralık dönüştürülmüş kaynak aralığını içerecek büyüklükte olmalıdır.

_Result Eşit olacak şekilde ayarlayın _First1 algoritması ilk sürümünde*,* kaynak ve hedef aralıkların aynı olacaktır ve sıra yerde değiştirilecek. Ancak _Result aralığı içinde bir konuma yönelik olmayabilecekleri [_First1 + 1, _Last1).

Karmaşıklığını en fazla olan doğrusal (_Last1 – _First1) karşılaştırmaları.

Örnek

// alg_transform.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>

// The function object multiplies an element by a Factor
template <class Type>
class MultValue
{
   private:
      Type Factor;   // The value to multiply by
   public:
      // Constructor initializes the value to multiply by
      MultValue ( const Type& _Val ) : Factor ( _Val ) {
      }

      // The function call for the element to be multiplied
      Type operator ( ) ( Type& elem ) const 
      {
         return elem * Factor;
      }
};

int main( )
{
   using namespace std;
   vector <int> v1, v2 ( 7 ), v3 ( 7 );
   vector <int>::iterator Iter1, Iter2 , Iter3;

   // Constructing vector v1
   int i;
   for ( i = -4 ; i <= 2 ; i++ )
   {
      v1.push_back(  i );
   }

   cout << "Original vector  v1 = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Modifying the vector v1 in place
   transform (v1.begin ( ) , v1.end ( ) , v1.begin ( ) , MultValue<int> ( 2 ) );
   cout << "The elements of the vector v1 multiplied by 2 in place gives:"
        << "\n v1mod = ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Using transform to multiply each element by a factor of 5
   transform ( v1.begin ( ) , v1.end ( ) , v2.begin ( ) , MultValue<int> ( 5 ) );
   
   cout << "Multiplying the elements of the vector v1mod\n "
        <<  "by the factor 5 & copying to v2 gives:\n v2 = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")." << endl;

   // The second version of transform used to multiply the 
   // elements of the vectors v1mod & v2 pairwise
   transform ( v1.begin ( ) , v1.end ( ) ,  v2.begin ( ) , v3.begin ( ) , 
      multiplies <int> ( ) );
   
   cout << "Multiplying elements of the vectors v1mod and v2 pairwise "
        <<  "gives:\n v3 = ( " ;
   for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
      cout << *Iter3 << " ";
   cout << ")." << endl;
}
  
  
  
  

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

Standart Şablon Kütüphanesi