C++ में फ़ंक्टर क्या हैं और उनकी आवश्यकता क्यों है?
नमस्ते! मैं C++ सीख रहा हूँ और मुझे 'फ़ंक्टर' (functor) शब्द मिला। मैंने पढ़ा कि यह एक ऐसा object है जो function की तरह व्यवहार करता है। लेकिन मुझे समझ नहीं आ रहा कि इसकी आवश्यकता क्यों है, जबकि सामान्य functions और function pointers मौजूद हैं।
उदाहरण के लिए, मैं जानता हूँ कि `std::sort` में एक function को comparator के रूप में पास किया जा सकता है:
```cpp
bool compare(int a, int b) {
return a < b;
}
std::sort(vec.begin(), vec.end(), compare);
```
लेकिन overloaded `operator()` वाले object का उपयोग क्यों करें? इसका क्या लाभ है? मैंने सुना है कि functors state store कर सकते हैं, लेकिन मुझे समझ नहीं आता कि इसे व्यवहार में कैसे लागू करें। क्या आप एक सरल उदाहरण से समझा सकते हैं जहाँ functor सामान्य function से वास्तव में अधिक सुविधाजनक हो?
और एक और सवाल: क्या functors और lambda expressions एक ही चीज़ हैं? या ये अलग-अलग हैं? कोड उदाहरणों के साथ विस्तृत स्पष्टीकरण के लिए आभारी रहूँगा।
<<>>
फ़ंक्टर क्या है?
फ़ंक्टर (या functional object) एक class या structure है जिसमें function call operator operator() overloaded होता है।