猿问
下载APP

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

C++函数replace问题


繁花不似锦
浏览 49回答 3
3回答

慕用2447696

replace的返回值为void,不是int*12345Defined&nbsp;in&nbsp;header&nbsp;<algorithm>&nbsp;&nbsp;&nbsp;&nbsp;template<&nbsp;class&nbsp;ForwardIt,&nbsp;class&nbsp;T&nbsp;>void&nbsp;replace(&nbsp;ForwardIt&nbsp;first,&nbsp;ForwardIt&nbsp;last,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;T&&nbsp;old_value,&nbsp;const&nbsp;T&&nbsp;new_value&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;template<&nbsp;class&nbsp;ForwardIt,&nbsp;class&nbsp;UnaryPredicate,&nbsp;class&nbsp;T&nbsp;>void&nbsp;replace_if(&nbsp;ForwardIt&nbsp;first,&nbsp;ForwardIt&nbsp;last,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnaryPredicate&nbsp;p,&nbsp;const&nbsp;T&&nbsp;new_value&nbsp;);&nbsp;猜想你是想替换数组里面的某个值,可以这样写:1234567891011121314151617181920212223242526#include&nbsp;<iostream>#include&nbsp;<algorithm>using&nbsp;namespace&nbsp;std;&nbsp;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a[5]&nbsp;=&nbsp;{&nbsp;1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;*p&nbsp;=&nbsp;a;//实际上&nbsp;p没用到,可以注掉&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;old;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"请选输入被替换的元素:\n";&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;>>&nbsp;old;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;new_num;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"请输入新的元素:\n";&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;>>&nbsp;new_num;//&nbsp;&nbsp;&nbsp;&nbsp; /*int&nbsp;*end_rep&nbsp;=*/&nbsp;replace(a,&nbsp;a&nbsp;+&nbsp;5,&nbsp;old,&nbsp;new_num);//&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp; while&nbsp;(p&nbsp;!=&nbsp;end_rep)//&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp; {//&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&nbsp;<<&nbsp;*p&nbsp;<<&nbsp;"\t";//&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p++;//&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;//猜想你是想替换掉数组中的某个值,可以如下编写:&nbsp;&nbsp;&nbsp;&nbsp;replace_if(a,&nbsp;a&nbsp;+&nbsp;5,&nbsp;[old](int&nbsp;iVcomp)&nbsp;->bool{&nbsp;return&nbsp;iVcomp&nbsp;==&nbsp;old;&nbsp;},&nbsp;new_num);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//free(p);//不应该free,指向的是一个局部数组的地址,数组会自己销毁&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}关于&nbsp;replace_if的第三个参数,那个lambda,你可以查找相关资料。或者你也可以查下函数对象相关资料

慕森王

replace返回值是void类型 你赋值给int*肯定是会出错的。#include <iostream>#include <algorithm>using namespace std;int main(){int a[5]={1,2,3,4,5};//int *p=a;int old;cout<<"请选输入被替换的元素:\n";cin>>old;int new_num;cout<<"请输入新的元素:\n";cin>>new_num;/*int *end_rep=*/replace(a,a+5,old,new_num);for (int i=0;i<5;i++){cout << a[i] << " ";}cout << endl;system("pause");//while(p!=end_rep)//{// cout<<*p<<"\t";// p++;//}////free(p);return 0;}

达令说

根本没错,这是C不是C++ &nbsp;你编译环境搞错了吧
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答