• cb39a_c++_STL_算法_for_each_transform_比较


    cb39a_c++_STL_算法_for_each_transform_比较
    for_each() 速度快,不灵活
    transform() 速度慢, 非常灵活

    STL算法-修改性算法
    for_each()
    copy()
    copy_backward()
    transform()
    merge()
    swap_ranges()
    fill()
    fill_n()

    generate()
    generate_n()
    replace()
    replace_if()
    replace_copy()
    replace_copy_if()

    void square(int &elem)//for_each参数必须是按引用传递,速度快
    {
    elem = elem*elem;

    }
    int square2(int elem)//transform不能传引用,传copy,速度慢
    {
    return elem * elem;
    }

    int main()
    transform(b.begin(), b.end(), b.begin(), square2);

     1 /*cb39a_c++_STL_算法_for_each_transform_比较
     2 for_each() 速度快,不灵活
     3 transform() 速度慢, 非常灵活
     4 
     5 STL算法-修改性算法
     6 for_each()
     7 copy()
     8 copy_backward()
     9 transform()
    10 merge()
    11 swap_ranges()
    12 fill()
    13 fill_n()
    14 
    15 generate()
    16 generate_n()
    17 replace()
    18 replace_if()
    19 replace_copy()
    20 replace_copy_if()
    21 
    22 void square(int &elem)//for_each参数必须是按引用传递,速度快
    23 {
    24     elem = elem*elem;
    25 
    26 }
    27 int square2(int elem)//transform不能传引用,传copy,速度慢
    28 {
    29     return elem * elem;
    30 }
    31 
    32 int main()
    33 transform(b.begin(), b.end(), b.begin(), square2);
    34 */
    35 
    36 #include <iostream>
    37 #include <algorithm>
    38 #include <vector>
    39 
    40 using namespace std;
    41 void square(int &elem)//for_each参数必须是按引用传递,速度快
    42 {
    43     elem = elem*elem;
    44     
    45 }
    46 int square2(int elem)//transform不能传引用,传copy,速度慢
    47 {
    48     return elem * elem;
    49 }
    50 
    51 int main()
    52 {
    53     vector<int> a;
    54     vector<int> b;
    55     for (int i = 1; i <= 9; ++i)
    56     {
    57         a.push_back(i);
    58         b.push_back(i);
    59     }
    60     cout << "向量a:" << endl;
    61     for (vector<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
    62         cout << *iter << ' ';
    63     cout << endl;
    64     cout << "使用for_each" << endl;
    65     for_each(a.begin(), a.end(), square);//调用square函数
    66     for (vector<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
    67         cout << *iter << ' ';
    68     cout << endl;
    69 
    70     cout << "向量b:" << endl;
    71     for (vector<int>::iterator iter = b.begin(); iter != b.end(); ++iter)
    72         cout << *iter << ' ';
    73     cout << endl;
    74 
    75     cout << "使用transform算法,不能传引用" << endl;
    76     transform(b.begin(), b.end(), b.begin(), square2);
    77 
    78     for (vector<int>::iterator iter = b.begin(); iter != b.end(); ++iter)
    79         cout << *iter << ' ';
    80     cout << endl;
    81 
    82         
    83     return 0;
    84 }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    python+selenium环境搭建以及遇到的坑
    (二)第一个测试用例
    (一)TestNG介绍与安装
    Appium详解server capabilities
    Mac安装MySQL数据库
    POI 设置单元格样式
    JAVA_HOME环境变量失效的解决办法
    svn linux 命令
    StringUtils工具类的常用方法
    ArrayUtils 方法
  • 原文地址:https://www.cnblogs.com/txwtech/p/12350413.html
Copyright © 2020-2023  润新知