C++ transform
2024-10-15 04:02:20
transform函数的作用是:将某操作应用于指定范围的每个元素。transform函数有两个重载版本:
transform(first,last,result,op);//first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行操作的一元函数对象或sturct、class。
transform(first1,last1,first2,result,binary_op);//first1是第一个容器的首迭代
器,last1为第一个容器的末迭代器,first2为第二个容器的首迭代器,result为存放结果的容器,binary_op为要进行操作的二元函数
对象或sturct、class。
注意:第二个重载版本必须要保证两个容器的元素个数相等才行,否则会抛出异常。
看一个例子:利用transform函数将一个给定的字符串中的小写字母改写成大写字母,并将结果保存在一个叫second的数组里,原字符串内容不变。
我们只需要使用transform的第一个重载函数,当然我们也可以使用for_each函数来完成再copy几次就行了,现在来看一下代码:
#include <iostream>
#include <algorithm>
using namespace std;
char op(char ch)
{ if(ch>='A'&&ch<='Z')
return ch+;
else
return ch;
}
int main()
{
string first,second;
cin>>first;
second.resize(first.size());
transform(first.begin(),first.end(),second.begin(),op);
cout<<second<<endl;
return ;
}
再看一个例子:给你两个vector向量(元素个数相等),请你利用transform函数将两个vector的每个元素相乘,并输出相乘的结果。
代码:
foreach的用法
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void print(int &elem){cout<<elem<<" ";}
int op(int a,int b){return a*b;}
int main()
{
vector <int> A,B,SUM;
int n;
cin>>n;
for(int i=;i<n;i++)
{
int t;
cin>>t;
A.push_back(t);
}
for(int i=;i<n;i++)
{
int t;
cin>>t;
B.push_back(t);
}
SUM.resize(n);
transform(A.begin(),A.end(),B.begin(),SUM.begin(),op);
for_each(SUM.begin(),SUM.end(),print);
return ;
}
最新文章
- Redis和Memcached的区别详解
- Scala Collection简介
- case when 对某个字段值分类讨论
- IE下判断IE版本的语句...[if lte IE 6]……[endif]
- Oracle-查看oracle是否有表被锁
- 干货:Web应用上线之前程序员应该了解的技术细节
- Ruby on Rails Tutorial读书笔记-1
- [Mugeda HTML5技术教程之18]如何在Android应用中使用Mugeda动画内容
- MySQL--连接属性
- ngRoute路径出现#!#解决方案
- python 有关datetime时间日期 以及时间戳转换
- html计时发送验证码功能的实现
- HFun.快速开发平台(一)=》简述
- 项目开发常见字符串处理模型-strstr-while/dowhile模型
- BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法
- 如何部署hadoop集群
- WINDOWS 端口查看
- Hiero中的Events机制
- 使用FTP发布和更新Windows Azure网站
- Centos升级安装.Net core 1.1