次の方法で共有


生成

範囲内の各要素に関数オブジェクトによって生成される値を割り当てます。

template<class ForwardIterator, class Generator> 
   void generate( 
      ForwardIterator _First,  
      ForwardIterator _Last,  
      Generator _Gen 
   );

パラメーター

  • _First
    値が割り当てられた範囲内の先頭の要素の位置を示す前方反復子。

  • _Last
    値が割り当てられた範囲の最後の要素の一つ前の位置 1 に対処する前方反復子。

  • _Gen
    引数なしで呼び出される関数オブジェクト範囲の各要素に割り当てる値を生成するために使用します。

解説

Function オブジェクトは、範囲内の各要素に対して呼び出されるたびに呼び出され、同じ値を返す必要があります。 これは可能性があります (たとえば、ファイルから読み取り、またはローカル状態を参照し、変更します。 ジェネレーターの結果型は範囲の前方反復子の値型に変換できる必要があります。

参照される範囲が有効である必要があります。; すべての dereferenceable ポインターは、シーケンス内の最後の位置は incrementation で最初から到達可能である必要があります。

複雑に必要なジェネレーター (_Last – _First) 呼び出しとまったく線形です。

使用例

// alg_generate.cpp
// compile with: /EHsc
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>
#include <ostream>

int main( )
{
   using namespace std;

   // Assigning random values to vector integer elements
   vector <int> v1 ( 5 );
   vector <int>::iterator Iter1;
   deque <int> deq1 ( 5 );
   deque <int>::iterator d1_Iter;
   
   generate ( v1.begin ( ), v1.end ( ) , rand );
   
   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Assigning random values to deque integer elements
   generate ( deq1.begin ( ), deq1.end ( ) , rand );

   cout << "Deque deq1 is ( " ;
   for ( d1_Iter = deq1.begin( ) ; d1_Iter != deq1.end( ) ; d1_Iter++ )
      cout << *d1_Iter << " ";
   cout << ")." << endl;
}
  

必要条件

ヘッダー: <algorithm>

名前空間: std

参照

関連項目

generate (STL のサンプル)

標準テンプレート ライブラリ