首页 > 代码库 > C++ transform 浅析
C++ transform 浅析
【摘要】
transform,一个区间元素交换函数。该函数用于实现容器元素的变换操作。有例如以下两个使用原型,一个将迭代器区间[first。last)中元素。运行一元函数(有一个输入变量)对象op操作。交换后的结果放在[result,result+(last-first))区间中。还有一个将迭代器区间[first1,last1)的元素*i,依次与[first2,first2+(last-first))的元素*j,运行二元函数(有两个输入变量)操作binary_op(*i,*j)。交换结果放在[result,result+(last1-first1))。
【正文】
函数原型:
template < class InputIterator, class OutputIterator, class UnaryOperator > OutputIterator transform ( InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperator op );
template < class InputIterator1, class InputIterator2, class OutputIterator, class BinaryOperator > OutputIterator transform ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperator binary_op );
參数说明:
first1, last1
指出要进行元素变换的第一个迭代器区间 [first1,last1)。
first2
指出要进行元素变换的第二个迭代器区间的首个元素的迭代器位置,该区间的元素个数和第一个区间相等。
result
指出变换后的结果存放的迭代器区间的首个元素的迭代器位置
op
用一元函数对象op作为參数,运行其后返回一个结果值。
它能够是一个函数或对象内的类重载operator()。
binary_op
用二元函数对象binary_op作为參数。运行其后返回一个结果值。它能够是一个函数或对象内的类重载operator()。
程序演示样例:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int op_increase (int i) { return ++i; } int op_sum (int i, int j) { return i+j; } int main () { vector<int> first; vector<int> second; vector<int>::iterator it; // set some values: for (int i=1; i<6; i++) first.push_back (i*10); // first: 10 20 30 40 50 second.resize(first.size()); // allocate space transform (first.begin(), first.end(), second.begin(), op_increase); // second: 11 21 31 41 51 transform (first.begin(), first.end(), second.begin(), first.begin(), op_sum); // first: 21 41 61 81 101 cout << "first contains:"; for (it=first.begin(); it!=first.end(); ++it) cout << " " << *it; cout << endl; return 0; }
C++ transform 浅析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。