• cb42a_c++_STL_算法_替换_replace


    cb42a_c++_STL_算法_替换_replace
    replace(b,e,ov,nv),ov,old value, nv,new value
    replace_if(b,e,p,v) 根据p的条件,全部更换成v的值
    replace_copy(b1,e1,b2,ov,nv)//边复制变替换
    replace_copy_if(b1,e1,b1,p,v)

    error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
    vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可

    bind2nd(less<int>(), 5),预定义函数对象,需要包含functional头文件名。
    error C2955: “std::ostream_iterator”: 使用 类 模板 需要 模板 参数列表
    ostream_iterator(cout, " ")少了一个<int>
    ostream_iterator<int>(cout," ")

    1>d:users xwtechprojectscb42acb42acb42a.cpp(63): error C2672: “replace_if”: 未找到匹配的重载函数
    1>d:users xwtechprojectscb42acb42acb42a.cpp(63): error C2780: “void std::replace_if(const _FwdIt,const _FwdIt,_Pr,const _Ty &)”: 应输入 4 个参数,却提供了 5 个
    参数写法错误。
    replace_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), 5, 55);
    正确写法:
    replace_if(ilist.begin(), ilist.end(), bind2nd(less<int>(), 5), 0);

    error C2275: “std::modulus<int>”: 将此类型用作表达式非法
    bind2nd(modulus<int>(), 2),预定义函数对象<in>后面的小括号不要忘记了。

    ostream_iterator<int>(cout, " ")流输出对象 ,#include <iterator>

     1 /*cb42a_c++_STL_算法_替换_replace
     2 replace(b,e,ov,nv),ov,old value, nv,new value
     3 replace_if(b,e,p,v) 根据p的条件,全部更换成v的值
     4 replace_copy(b1,e1,b2,ov,nv)//边复制变替换
     5 replace_copy_if(b1,e1,b1,p,v)
     6 
     7 
     8 
     9 error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
    10 vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可
    11 
    12 bind2nd(less<int>(), 5),预定义函数对象,需要包含functional头文件名。
    13 error C2955: “std::ostream_iterator”: 使用 类 模板 需要 模板 参数列表
    14 ostream_iterator(cout, " ")少了一个<int>
    15 ostream_iterator<int>(cout," ")
    16 
    17 1>d:users	xwtechprojectscb42acb42acb42a.cpp(63): error C2672: “replace_if”: 未找到匹配的重载函数
    18 1>d:users	xwtechprojectscb42acb42acb42a.cpp(63): error C2780: “void std::replace_if(const _FwdIt,const _FwdIt,_Pr,const _Ty &)”: 应输入 4 个参数,却提供了 5 个
    19 参数写法错误。
    20 replace_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), 5, 55);
    21 正确写法:
    22 replace_if(ilist.begin(), ilist.end(), bind2nd(less<int>(), 5), 0);
    23 
    24  error C2275: “std::modulus<int>”: 将此类型用作表达式非法
    25 bind2nd(modulus<int>(), 2),预定义函数对象<in>后面的小括号不要忘记了。
    26 
    27 ostream_iterator<int>(cout, " ")流输出对象 ,#include <iterator>
    28 */
    29 
    30 #include <iostream>
    31 #include <algorithm>
    32 #include <vector>
    33 #include <list>
    34 #include <functional>
    35 #include <iterator>
    36 
    37 using namespace std;
    38 template <typename TT>
    39 void print(TT &ilist) 
    40 {
    41     for (TT::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
    42         cout << *iter << ' ';
    43     cout << endl;
    44 }
    45 
    46 
    47 int main()
    48 {
    49     list<int> ilist;
    50     for (int i = 1; i <= 7; ++i)
    51         ilist.push_back(i);
    52     for (int i = 4; i <= 9; ++i)
    53         ilist.push_back(i);
    54     print(ilist);
    55     /*for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
    56         cout << *iter << ' ';
    57     cout << endl;*/
    58 
    59     cout << "所有6替换成42" << endl;
    60     replace(ilist.begin(), ilist.end(), 6, 42);
    61     print(ilist);
    62     
    63     cout << "小于5的数替换成0" << endl;
    64     replace_if(ilist.begin(), ilist.end(), bind2nd(less<int>(), 5), 0);
    65     print(ilist);
    66 
    67     list<int>ilist2;
    68     for (int i = 2; i <= 6; ++i)
    69         ilist2.push_back(i);
    70     for (int i = 4; i <= 9; ++i)
    71         ilist2.push_back(i);
    72     print(ilist2);
    73 
    74     cout << "边复制,边替换,5,替换成55,直接输出到cout" << endl;
    75     replace_copy(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), 5, 55);
    76     cout << endl;
    77     cout << "边复制,边替换,小于5,替换成42,直接输出到cout" << endl;
    78     replace_copy_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), bind2nd(less<int>(), 5), 42);
    79     
    80     cout << endl;
    81     cout << "边复制,边替换,取模2为1时,替换成0,直接输出到cout" << endl;
    82     cout << "就是所有奇数替换成0" << endl;
    83     replace_copy_if(ilist2.begin(), ilist2.end(), ostream_iterator<int>(cout, " "), bind2nd(modulus<int>(), 2), 0);
    84     return 0;
    85 }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    机器学习的定义和分类
    选股
    mysql修改密码
    快速排序
    php的错误类型
    MySQL数据库优化
    库存超卖问题
    循环处理
    kafka安装配置
    JavaScript、jQuery杂记
  • 原文地址:https://www.cnblogs.com/txwtech/p/12355944.html
Copyright © 2020-2023  润新知