bana bu kodun neden çalıştığını söyleyebilir misiniz? replace_if
algoritması tarafından kullanılan aşırı yüklü operatör() var. Ana işlevde, IsEqual sınıfının sabit nesnesini oluşturdum, böylece yalnızca sabit işlev üyesi kullanılmalıdır. Bir şekilde istikrar, çalışmıyor ve bu operatör denir.C++ bu ve sürekli nesne
#include <iostream>
#include <vector>
#include <algorithm>
class IsEqual {
int value;
public:
IsEqual(int v) : value(v) {}
bool operator()(const int &elem){
this->value=6;
return elem == value;
}
};
int main()
{
const IsEqual tst(2);
std::vector<int> vec = {3,2,1,4,3,7,8,6};
std::replace_if(vec.begin(), vec.end(), tst, 5);
for (int i : vec) std::cout << i << " ";
std::cout<<std::endl;
}
sonucu: 3 2 1 4 3 7 8 5
bak: Bir
const
nesneye atıfta olacağını bericonst
olmak operatörü gerektirir, çünkü bu bir derleyici hatasına neden olacaktır. cppreference.com/w/cpp/algorithm/replace) ve yükleme bağımsız değişkeninin nasıl bildirildiğini düşünün. –