c++X学习之transform
2015-08-04 10:43
465 查看
最近在学习C++的STL,自己也是简单记录下
transform的函数原型
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()。
程序示例
/*******************************************************************
* Copyright (C) Jerry Jiang
*
* File Name : transform .cpp
* Author : Jerry Jiang
* Create Time : 2012-4-29 22:22:18
* Mail : jbiaojerry@gmail.com
* Blog : http://blog.csdn.net/jerryjbiao
*
* Description : 简单的程序诠释C++ STL算法系列之十八
* 变易算法 : 区间元素交换 transform
*
******************************************************************/
#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;
}
transform的函数原型
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()。
程序示例
/*******************************************************************
* Copyright (C) Jerry Jiang
*
* File Name : transform .cpp
* Author : Jerry Jiang
* Create Time : 2012-4-29 22:22:18
* Mail : jbiaojerry@gmail.com
* Blog : http://blog.csdn.net/jerryjbiao
*
* Description : 简单的程序诠释C++ STL算法系列之十八
* 变易算法 : 区间元素交换 transform
*
******************************************************************/
#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语言main函数的参数含义及输入
- C语言基础100例
- C/C++ VS2013 动态链接库详解
- C++ 标准模板库STL multimap 使用方法与应用介绍
- C/C++函数参数读取顺序
- C++的静态成员变量和静态成员函数详解
- windows 多线程
- c++中vector容器的用法
- C++ map的使用
- 用C++将China译成密码
- 关于C语言中二级指针的理解
- C语言和C++的区别与对比
- 学习《Visual+C++/Turbo+C串口通信编程实践》第一章 MFC控件MSCOMM
- 关于c++中getline(cin,str)在cin之后使用
- c++ 指针
- C/C++ Prime学习要点1——实现memcpy库函数
- oj 中G++和C++区别
- C语言文件操作
- C++实现简单的职工信息管理系统
- C++、 C 中的结构体、联合和枚举 异同