C++std函数之transform
/*////////////////////////////////
template < class InputIterator, class OutputIterator, class UnaryOperator >
OutputIterator transform ( InputIterator first1, // 源容器的起始地址
InputIterator last1, // 源容器的终止地址
OutputIterator result, // 目标容器的起始地址
UnaryOperator op ); // 函数指针
// typedef 目标容器元素类型 (*UnaryOperator)(源容器元素类型); template < class InputIterator1, class InputIterator2,
class OutputIterator, class BinaryOperator >
OutputIterator transform ( InputIterator1 first1, // 源容器1的起始地址
InputIterator1 last1, // 源容器1的终止地址
InputIterator2 first2, // 源容器2的起始地址,元素个数与1相同
OutputIterator result, // 目标容器的起始地址,元素个数与1相同
BinaryOperator binary_op ); // 函数指针
// typedef 目标容器元素类型 (*BinaryOperator)(源容器1元素类型,源容器2元素类型);
//*//////////////////////////////// #include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std; int op_increase (int i)
{
return i+1;
} int op_sum (int i, int j)
{
return i+j;
} int to_upper(int c)
{
if (islower(c))
{
return (c-32);
} return c;
} int to_lower(int c)
{
if (isupper(c))
{
return c+32;
} return c;
} 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 ///将first容器的元素加1赋值给second容器
second.resize(first.size()); // allocate space !!!必须预先设置一个大小与first相同
transform (first.begin(), first.end(), second.begin(), op_increase); // second: 11 21 31 41 51
cout << "second contains:";
for (it=second.begin(); it!=second.end(); ++it)
{
cout << " " << *it;
}
cout << endl;
//*//////////////////////////////////////////// ///将first容器的元素与second容器的元素相加,并将得到的结果重新赋值给first
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;
//*////////////////////////////////////////////////////////////////////////// ///大小写转换/////////////////////////////////////
string strsrc("Hello, World!");
string strdest;
strdest.resize(strsrc.size()); // !!!必须预先设置一个大小与strsrc相同
transform(strsrc.begin(), strsrc.end(), strdest.begin(), to_upper); // 转换为大写
cout << strdest << endl; transform(strsrc.begin(), strsrc.end(), strdest.begin(), to_lower); // 转换为小写
cout << strdest << endl;
//*///////////////////////////////////////// return 0;
}
C++std函数之transform的更多相关文章
- STD函数的内部计算公式
各股票软件的标准差函数STD是不同的,而布林线的上下轨是以STD为基础计算出来的,所以使用布林线应小心.以2008/3/28的上证综指为例,利用如下代码:"收盘价3日STD:STD(CLOS ...
- hive -- 自定义函数和Transform
hive -- 自定义函数和Transform UDF操作单行数据, UDAF:聚合函数,接受多行数据,并产生一个输出数据行 UDTF:操作单个数据 使用udf方法: 第一种: add jar xxx ...
- matlab std函数 用法及实例
MATLAB常常用到std函数来进行标准差计算,下面我就通过实例介绍一下 matlab std函数怎么用. 1. std函数是用来计算标准偏差的一个函数,由于其有不同的参数,我们就用下面的例子进行介绍 ...
- 【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用
1.目的,无限极分类 /* * getdepartment:获取[当前登录用户对应公司的所有有效部门] * DB::table ==>返回查询构造器结果,不会返回一个collect实例 * 而 ...
- C++ STD inner_product函数
C++ STD函数 inner_product是c++标准库封装的一个函数. 函数原型: 函数1: inner_product(beg1, end1, beg2, init) 函数2: inner ...
- Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别
敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...
- STL常用遍历算法for_each和transform的比较
for_each()和transform()算法比较 1)STL 算法 – 修改性算法 for_each() copy() copy_backward() transform() merge ...
- STL经常使用遍历算法for_each和transform的比較
for_each()和transform()算法比較 1)STL 算法 – 改动性算法 for_each() copy() copy_backward() transform() merge ...
- C++进阶 STL(2) 第二天 一元/二元函数对象、一元/二元谓词、stack容器、queue容器、list容器(双向链表)、set容器、对组、map容器
01 上次课程回顾 昨天讲了三个容器 string string是对char*进行的封装 vector 单口容器 动态数组 deque(双端队列) 函数对象/谓词: 一元函数对象: for_each ...
随机推荐
- UNIX环境高级编程——守护进程
一.守护进程简介 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系 ...
- Hive drop table卡住的问题
在hive中,show tables,create 等命令能正常执行,删除表drop table x时,会出现卡住的现象. 进入mysql, show variables like 'char%' 可 ...
- Mybatis插件原理分析(二)
在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. ...
- 第二篇、vlc-android之源码介绍
注明 转载请注明出处:http://blog.csdn.net/cuiran/article/details/35987853 正文 继<第一篇.vlc-android之开篇介绍> htt ...
- 《高效能程序员的修炼》读后感 By Yong Zhang
想不到我工作中经常GOOGLE搜寻技术问题的stack overflow网站的创办人竟然是<高效能程序员的修炼>一书的作者!看了一遍全书,果然名不虚传. 本书更多的从人文角度而非技术角度去 ...
- python +Django 搭建web开发环境初步,显示当前时间
1.python 的安装 网上很多关于django跟python 开发的资料,这块我正在实习准备用这个两个合起来搞一个基于web 的东西出来现在开始学习,写点东西记录一下心得. 开发环境是window ...
- hibernate关联对象的增删改查------增
本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...
- OS X升级到10.11后Xcode6.4界面无iOS device选择栏的解决办法
原来在Xcode6.4项目运行按钮右侧会有一个可以选择设备或模拟器的选择栏,但是升级后没有了.但是Xcode7.0.1打开同样的项目会有显示. 简单找了一下无果后,发现咋Xcode顶部菜单里可以找到切 ...
- 2016/1/9:深度剖析安卓Framebuffer设备驱动
忙了几天,今天在公司居然没什么活干 ,所以早上就用公司的电脑写写之前在公司编写framebuffer的使用心得体会总结,这也算是一点开发经验,不过我还没写全,精华部分还是自己藏着吧.直到下午才开始有点 ...
- LIRe 源代码分析 1:整体结构
===================================================== LIRe源代码分析系列文章列表: LIRe 源代码分析 1:整体结构 LIRe 源代码分析 ...