#include<iostream>
#include<vector>
#include <list>
#include <algorithm>
#include <functional>

using namespace std;

//不需拷贝,速度快
void square(int &elementParam)
{
  elementParam = elementParam*elementParam;
}

//速度慢,传参数一次拷贝,返回时一次拷贝
int square2(int elementParam)
{
  return elementParam*elementParam;
}

int main()
{
  vector<int> vec2;
  vector<int> vec3;

  for (int k=0;k<10;k++)
  {
    vec2.push_back(k);
    vec3.push_back(k);
  }

  for_each(vec2.begin(),vec2.end(),square);

  for (auto vec_iter2 = vec2.begin(); vec_iter2 != vec2.end(); ++vec_iter2)
  {
    cout << *vec_iter2 << " ";
  }
  cout << endl;
  cout << "------------------------------------------------------" << endl;

  for (auto vec_iter3 = vec3.begin(); vec_iter3 != vec3.end(); ++vec_iter3)
  {
    cout << *vec_iter3 << " ";
  }
  cout << endl;
  cout << "------------------------------------------------------" << endl;

  transform(vec3.begin(),vec3.end(),vec3.begin(),square2);
  for (auto vec_iter3 = vec3.begin(); vec_iter3 != vec3.end(); ++vec_iter3)
  {
    cout << *vec_iter3 << " ";
  }
  cout << endl;
  cout << "------------------------------------------------------" << endl;

  //transform 比 for_each灵活

//for_each比transform速度快

  system("pause");
  return 0;
}

=====================================================

0 1 4 9 16 25 36 49 64 81
------------------------------------------------------
0 1 2 3 4 5 6 7 8 9
------------------------------------------------------
0 1 4 9 16 25 36 49 64 81
------------------------------------------------------
请按任意键继续. . .

C++ transform for_each的更多相关文章

  1. lambda表达式和for_each,find_if

    1 lambda表达式可以允许我传递任意可调用对象,必须要有捕获列表和函数体,标准形式是[捕获列表] (参数列表)->return tpye{函数体} 谓词:一元谓词指的是只能接受一个传入参数, ...

  2. C++STL 算法

    算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. <algorithm>是所有STL头文件中最大的一个,其 ...

  3. [C++ STL] 常用算法总结

    1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...

  4. 传智播客C++视频学习笔记(5)

    #include <iostream> using namespace std; void swapInt(int& a, int& b) { int temp = a; ...

  5. C++ 进阶 模板和STL

    C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只 ...

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

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

  7. stl中的transform()注意其与for_each的不同点(有无返回值)

    #include<iostream> using namespace std; #include"vector" #include"algorithm&quo ...

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

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

  9. 记录 C++ STL 中 一些好用的函数--持续更新 (for_each,transform,count_if,find_if)

    在日常的编程中,有这么几种操作还是比较常见的: 把一组数据都赋值成一个数,在一组数据中查找一个数,统计一组数据中符合条件的数等等. 一般的写法可以用循环,没有什么是循环不能搞定的.假如在这里怎么用介绍 ...

随机推荐

  1. Linux学习之八-配置FTP连接Linux服务器

    配置ftp连接Linux服务器 通过配置ftp服务器,可以实现局域网内共享文件,甚至不同用户具有不同权限,需要的工具有Windows平台ftp客户端FileZilla(免费开源) 下载地址:https ...

  2. 使用fastjson统一序列化响应格式

    摘要:其实很简单的处理方式,只不够优雅,或者说没有找到fastjson为其提供便捷的处理方式.因此记录下处理该问题的过程. 目标:将所有api请求,即响应为APPLICATION_JSON的内容做统一 ...

  3. linux上构建ftp服务器

    linux上构建ftp服务器 服务器搭建 https://help.aliyun.com/knowledge_detail/60152.html,可以参考这篇博文. 配置文件详解 进入/etc/vsf ...

  4. Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)

    测试内容: TreeMap<Person,Integer> 的两级排序 1.先按Person.id 从小到大 (需要把int类型转换成包装类 Integer, 才可以使用p1.getId( ...

  5. Qtxlsx

    https://blog.csdn.net/qq_40194498/article/details/80817264

  6. css选择器学习(一)

    1.通用选择器“*”和元素选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  7. canvas制图学习

    <!DOCTYPE html> <html lang="zh-en"> <head> <meta charset="UTF-8& ...

  8. .net 后台给html控件赋值

    接上篇,上篇中每个专业的名称是写死的,如何动态获取数据库中的值,同时对其他代码产生最小影响呢? 前台代码 <div " id="div1" runat=" ...

  9. 中文乱码 encodeURI来解决URL传递时的中文问题

    解决中文乱麻问题,页面端发出的数据作两次encodeURI var name="张三"; encodeURI(encodeURI(name)); 后台解码: URLDecoder. ...

  10. node 初级概念总结

    (1)nodejs跳过了服务器软件 直接充当web服务器,nodejs也没有Web容器 (2)nodejs --- 自身哲学---[花最小的硬件成本,追求更好的并发请求,更高的处理性能] (3)nod ...