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
提交
取消