http://www.cplusplus.com/reference/algorithm/for_each/
यूनरी फ़ंक्शन में तर्क के रूप में एक तत्व ले रहा है। यह या तो किसी फ़ंक्शन या ऑब्जेक्ट का पॉइंटर हो सकता है जिसका वर्ग ऑपरेटर() को अधिभारित करता है। इसका वापसी मूल्य, यदि कोई है, अनदेखा किया जाता है।क्यों फॉर_एच अपने मज़ेदार तर्क को संशोधित नहीं कर सकता?
इस लेख के अनुसार, मैं उम्मीद है कि for_each वास्तव में वस्तु अपने तीसरे तर्क के रूप में दिए गए संशोधित करता है, लेकिन ऐसा लगता है for_each की तरह एक अस्थायी वस्तु पर चल रही है, और यहां तक कि वस्तु यह करने के लिए दिया संशोधित नहीं करता है।
तो, इस तरह से इसे क्यों लागू किया जाता है? यह बहुत कम उपयोगी लगता है। या मैंने कुछ गलत समझा और नीचे दिए गए मेरे कोड में त्रुटियां हैं?
#include <iostream>
#include <vector>
#include <algorithm>
template <class T> struct Multiplicator{
T mresult;
public:
const T& result() const{return mresult;}
Multiplicator(T init_result = 1){
mresult = init_result;
}
void operator()(T element){
mresult *= element;
std::cout << element << " "; // debug print
}
};
int main()
{
std::vector<double> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
Multiplicator<double> multiply;
std::for_each(vec.begin(),vec.end(),multiply);
std::cout << "\nResult: " << multiply.result() << std::endl;
return 0;
}
अपेक्षित उत्पादन:
1 2 3 Result: 6
लेकिन उत्पादन निम्नलिखित गया:
1 2 3 Result: 1
अपना प्रश्न शीर्षक बदलने के बारे में कैसे? दूसरों को ढूंढना आसान हो सकता है। – BeeBand