C++函数replace问题
3 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
replace的返回值为void,不是int*
12345 | Defined 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,你可以查找相关资料。或者你也可以查下函数对象相关资料
添加回答
举报
0/150
提交
取消