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,你可以查找相關資料?;蛘吣阋部梢圆橄潞瘮祵ο笙嚓P資料
添加回答
舉報
0/150
提交
取消

