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

std::mem_fun.

Рубрика: functional, Дата: 12 July, 2013, Автор:
Tags: ,

Это функция адаптирует члены классов, как функциональные объекты.

Эта функция именно адаптирует функции члены, тех объектов из которых состоит сам тип, который находится в контейнере.

#include <iostream>
using std::cout;
using std::endl;
#include <algorithm>
using std::transform;
#include <functional>
using std::mem_fun;
#include <string>
using std::string;
#include <vector>
using std::vector;

int main()
{
	vector<string*> v;
	v.push_back(new string("one"));
	v.push_back(new string("two"));
	v.push_back(new string("three"));
	v.push_back(new string("four"));
	v.push_back(new string("five"));

	vector<int> l(v.size());

	//как видим функцию нужно передавать по ссылке, а иначе ошибка вылазит.
	transform(v.begin(),v.end(),l.begin(),mem_fun(&string::length));

	//вывод резултата
	for(int i=0;i<5;i++)
		cout <<l[i]<<' ';//3 3 5 4 4
	cout <<endl;

	return 0;
}

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

rss