1.transform函数的使用

transform在指定的范围内应用于给定的操作,并将结果存储在指定的另一个范围内。transform函数包含在<algorithm>头文件中。

以下是std::transform的两个声明,

一元操作:

template <class InputIterator, class OutputIterator, class UnaryOperation>

OutputIterator transform (InputIterator first1, InputIterator last1,OutputIterator result, UnaryOperation op);

对于一元操作,将op应用于[first1, last1]范围内的每个元素,并将每个操作返回的值存储在以result开头的范围内。给定的op将被连续调用last1-first1+1次。

op可以是函数指针或函数对象或lambda表达式。

例如:op的一个实现 即将[first1, last1]范围内的每个元素加5,然后依次存储到result中。

int op_increase(int i) {return (i + 5)};
调用std::transform的方式如下:

std::transform(first1, last1, result, op_increase);
二元操作:

template <class InputIterator1, class InputIterator2,class OutputIterator, class BinaryOperation>
OutputIterator transform (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, OutputIterator result,BinaryOperation binary_op);

对于二元操作,使用[first1, last1]范围内的每个元素作为第一个参数调用binary_op,并以first2开头的范围内的每个元素作为第二个参数调用binary_op,每次调用返回的值都存储在以result开头的范围内。给定的binary_op将被连续调用last1-first1+1次。binary_op可以是函数指针或函数对象或lambda表达式。

例如:binary_op的一个实现即将first1和first2开头的范围内的每个元素相加,然后依次存储到result中。

int op_add(int, a, int b) {return (a + b)};
调用std::transform的方式如下:

std::transform(first1, last1, first2, result, op_add);

案例:

std::string s("Welcome");
std::transform(s.begin(), s.end(), s.begin(),
[](unsigned char c) { return std::toupper(c); });
std::cout << s << std::endl; // WELCOME std::transform(s.begin(), s.end(), s.begin(), ::tolower);
std::cout << s << std::endl; // welcome

2.find 函数的使用

a.find()

查找第一次出现的目标字符串:

string s1 = "abcdef";

string s2 = "ef";

int ans = s1.find(s2) ;   //在S1中查找子串S2

b.find_first_of()

查找子串中的某个字符最先出现的位置,find()是全匹配,find_first_of()不是全匹配.

string str("hi world");

string::size pos=str.find_first_of("h");

if(pos!=string::npos)  //或if(pos!=-1)

{..

....// 查找到了

} //不存在是find返回string::npos(-1)

最新文章

  1. path操作
  2. virtualBox上虚拟机和主机互联{}
  3. bzoj 1079 着色方案
  4. OS实验报告——作业调度模拟程序
  5. 新萝卜家园GHOST WIN7系统32,64位极速装机特别版
  6. ucenter 整合同步登录的内部实现原理及thinkphp整合ucenter
  7. JavaScript中统计Textarea字数并提示还能输入的字符
  8. ASCII字符集
  9. 第二百一十天 how can I 坚持
  10. Word分栏
  11. linux下fflush(stdin)的使用问题
  12. SQL点滴26—常见T-SQL面试解析
  13. hdu1032
  14. SQL Server 获取本周,本月,本年等时间内记录
  15. python-while else
  16. GenerationType四中类型
  17. 【PAT】B1044 火星数字(20 分)
  18. 算法时间复杂度的表示法O(n&#178;)、O(n)、O(1)、O(nlogn)等是什么意思?
  19. node.js项目多环境配置
  20. VueJS 数据驱动和依赖追踪分析

热门文章

  1. python_异常处理_断言
  2. Python_collections_deque双向队列
  3. 常见内网IP段
  4. Codeforces 1144G Two Merged Sequences dp
  5. BZOJ3172 [Tjoi2013]单词 字符串 SA ST表
  6. .netcore加入APM系统 SkyWalking
  7. IDEA创建Web项目(maven)
  8. HTML—xhtml和html5
  9. Java集合及LIst接口
  10. debian9 开启rc.local服务