generate

[機能]

  指定した範囲の要素を,指定した関数によって生成された要素に設定します.

[形式]
	#include <algorithm>
	#include <functional>

	template <class ForwardIterator, class Generator> void generate(ForwardIterator first, ForwardIterator last, Generator gen);
		

[使用例]

  1. generate と generate_n の使用方法です.関数としては,以下に示すように関数オブジェクトを使用することも可能です.
    #include <stdio.h>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int set10() { return 10; }
    class set20
    {
    	public:
    		int operator() ()
    		{
    			return 20;
    		}
    };
    
    int main()
    {
    	vector<int> v1;
    	vector<int>::iterator it;
    					// 初期設定
    	printf("**初期状態**\n");
    	for (int i1 = 0; i1 < 5; i1++)
    		v1.push_back(i1+1);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// すべての範囲の要素を 10 にする
    	printf("すべての範囲の要素を 10 にする\n");
    	generate(v1.begin(), v1.end(), set10);
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    					// 後ろの 3 つの要素を 20 にする
    	printf("後ろの 3 つの要素を 20 にする\n");
    	generate_n(v1.begin()+2, 3, set20());
    	for (it = v1.begin(); it != v1.end(); it++)
    		printf("  %d", *it);
    	printf("\n");
    
    	return 0;
    }
    			
    (出力)
    **初期状態**
      1  2  3  4  5
    すべての範囲の要素を 10 にする
      10  10  10  10  10
    後ろの 3 つの要素を 20 にする
      10  10  20  20  20
    			
[参照]

generate_n

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引