- 269 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 18:27:56 ]
- 初めて出てきた要素に対してのみ動作するunique_transformを実装してるのですが
unary_functionを継承した関数オブジェクトだけでなく 普通の関数も渡せるようにするにはどうすれば良いのでしょうか? template<class InputIterator, class OutputIterator, class UnaryFunction> InputIterator unique_transform(InputIterator first, InputIterator last, OutputIterator result, UnaryFunction unary_func){ set<iterator_traits<InputIterator>::value_type> s; while(first!=last){ if(count(s.begin(),s.end(),*first)>=1){++first;} else{ s.insert(*first); *result=unary_func(*first); ++first;++result; } } return last; } struct i:public unary_function<int,int>{ int operator()(int a)const{return a;} }; //main側 string a="abcadbc"; string b; unique_transform(a.begin(),a.end(),back_inserter(b),i()); cout << b << endl; これを int id(int n){return n;}を定義して unique_transform(a.begin(),a.end(),back_inserter(b),id) などと出来るようにしたい 後、STL実装ってVisualStudioのどっかのフォルダに入ってるんですかね?
|

|