/*////////////////////////////////
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的更多相关文章

  1. STD函数的内部计算公式

    各股票软件的标准差函数STD是不同的,而布林线的上下轨是以STD为基础计算出来的,所以使用布林线应小心.以2008/3/28的上证综指为例,利用如下代码:"收盘价3日STD:STD(CLOS ...

  2. hive -- 自定义函数和Transform

    hive -- 自定义函数和Transform UDF操作单行数据, UDAF:聚合函数,接受多行数据,并产生一个输出数据行 UDTF:操作单个数据 使用udf方法: 第一种: add jar xxx ...

  3. matlab std函数 用法及实例

    MATLAB常常用到std函数来进行标准差计算,下面我就通过实例介绍一下 matlab std函数怎么用. 1. std函数是用来计算标准偏差的一个函数,由于其有不同的参数,我们就用下面的例子进行介绍 ...

  4. 【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用

    1.目的,无限极分类 /* * getdepartment:获取[当前登录用户对应公司的所有有效部门] * DB::table ==>返回查询构造器结果,不会返回一个collect实例 * 而 ...

  5. C++ STD inner_product函数

    C++ STD函数   inner_product是c++标准库封装的一个函数. 函数原型: 函数1: inner_product(beg1, end1, beg2, init) 函数2: inner ...

  6. Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

    敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...

  7. STL常用遍历算法for_each和transform的比较

    for_each()和transform()算法比较 1)STL 算法 – 修改性算法  for_each()  copy()  copy_backward()  transform()  merge ...

  8. STL经常使用遍历算法for_each和transform的比較

    for_each()和transform()算法比較 1)STL 算法 – 改动性算法  for_each()  copy()  copy_backward()  transform()  merge ...

  9. C++进阶 STL(2) 第二天 一元/二元函数对象、一元/二元谓词、stack容器、queue容器、list容器(双向链表)、set容器、对组、map容器

    01 上次课程回顾 昨天讲了三个容器 string  string是对char*进行的封装 vector 单口容器 动态数组 deque(双端队列) 函数对象/谓词: 一元函数对象: for_each ...

随机推荐

  1. UNIX网络编程——使用select函数编写客户端和服务器

    首先看原先<UNIX网络编程--并发服务器(TCP)>的代码,服务器代码serv.c: #include<stdio.h> #include<sys/types.h> ...

  2. Ajax及jQuery学习

    AJAX(Asynchronous JavaScript and XML),异步的javaScript与XML AJax中一个重要的对象是XMLHttpRequest. function ajaxSu ...

  3. golang:一个高性能低精度timer实现

    在go自带的timer实现中,采用的是通常的最小堆的方式,具体可以参见这里. 最小堆能够提供很好的定时精度,但是,在实际情况中,我们并不需要这样高精度的定时器,譬如对于一个连接,如果它在2分钟以内没有 ...

  4. 图文浅析Binder机制

    总述: Binder是Android系统提供的一种IPC机制,Android系统基本就可以看做基于Binder的C/S架构,Binder也是C/S形式出现,它属于驱动但是驱动的一段内存而不是设备,框架 ...

  5. Socket编程实践(11) --epoll原理与封装

    常用模型的特点 Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 se ...

  6. Linux IPC实践(5) --System V消息队列(2)

    消息发送/接收API msgsnd函数 int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 参数 msgid: 由ms ...

  7. Miscellaneous Articles

    标记一下,慢慢看  http://www.oracle-base.com/articles/misc/articles-misc.php Miscellaneous Articles DBA Deve ...

  8. CSS引入

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Android事件总线分发库EventBus3.0的简单讲解与实践

    Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...

  10. Oracle中添加自动编号的序列

    1. 创建表T_Test create table T_Test(id int  ,address char(25), pay int); 2. 创建自增序列 create sequence SEQ_ ...