Предыдущий пост -
Следующий пост -

std::generate.

Рубрика: Алгоритмы, Дата: 5 July, 2013, Автор:
Tags: ,

Заменяет все элементы результатом операции.

Да эта функция принимать может как функцию которая заполняет элемент, так и функциональный объект.

#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <algorithm>
using std::generate;
#include <cstdlib>
using std::srand;
using std::rand;
#include <ctime>
using std::time;

int Rand(){return rand()%100;}

struct obj
{
	int cou;
	obj():cou(0){}//конструктор по умолчанию
	int operator()(){return cou++;}
}obj1;//псевдоним

int main()
{
	//засеваем семя
	srand(time(0));

	vector<int> v(8);//0 0 0 0 0 0 0 0

	//заполняем вектор случайными числами
	generate(v.begin(),v.end(),Rand);

	//вывод результата
	vector<int>::iterator it;
	for(it=v.begin();it!=v.end();++it)
		cout <<*it<<' ';
	cout <<endl;

	//используем функциональный объект
	generate(v.begin(),v.end(),obj1);

	//вывод результата
	for(it=v.begin();it!=v.end();++it)
		cout <<*it<<' ';
	cout <<endl;

	return 0;
}

[youtube]http://www.youtube.com/watch?v=WnTpgTbqhAE[/youtube]

rss