为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于C++函数replace问题?

请问关于C++函数replace问题?

繁花不似锦 2019-07-25 10:06:40
C++函数replace问题
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

replace的返回值为void,不是int*

12345Defined in header <algorithm>    templateclass ForwardIt, class T >void replace( ForwardIt first, ForwardIt last,              const T& old_value, const T& new_value );    (1)    templateclass ForwardIt, class UnaryPredicate, class T >void replace_if( ForwardIt first, ForwardIt last,                 UnaryPredicate p, const T& new_value );

 猜想你是想替换数组里面的某个值,可以这样写:

1234567891011121314151617181920212223242526#include <iostream>#include <algorithm>using namespace std; int main(){    int a[5] = { 1, 2, 3, 4, 5 };    int *p = a;//实际上 p没用到,可以注掉    int old;    cout << "请选输入被替换的元素:\n";    cin >> old;    int new_num;    cout << "请输入新的元素:\n";    cin >> new_num;//     /*int *end_rep =*/ replace(a, a + 5, old, new_num);// //     while (p != end_rep)// //     {// //         cout << *p << "\t";// //         p++;// //     }    //猜想你是想替换掉数组中的某个值,可以如下编写:    replace_if(a, a + 5, [old](int iVcomp) ->boolreturn iVcomp == old; }, new_num);     //free(p);//不应该free,指向的是一个局部数组的地址,数组会自己销毁    return 0;}

关于 replace_if的第三个参数,那个lambda,你可以查找相关资料。或者你也可以查下函数对象相关资料


查看完整回答
反对 回复 2019-07-29
?
达令说

TA贡献1821条经验 获得超6个赞

根本没错,这是C不是C++  你编译环境搞错了吧


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 676 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信