鸿蒙传说
replace的返回值为void,不是int*12345Defined in header <algorithm> template< class ForwardIt, class T >void replace( ForwardIt first, ForwardIt last, const T& old_value, const T& new_value ); (1) template< class 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) ->bool{ return iVcomp == old; }, new_num); //free(p);//不应该free,指向的是一个局部数组的地址,数组会自己销毁 return 0;}关于 replace_if的第三个参数,那个lambda,你可以查找相关资料。或者你也可以查下函数对象相关资料