यहाँ कैसे मेरी कक्षा के रूप में परिभाषित किया गया है की एक सामान्य विचार है के साथ सदस्य समारोह पर for_each उपयोगstd :: दो आर्ग
struct Funktor
{
Funktor(int val):m_val(val){}
bool operator()(int arg1, int arg2) { return m_val==arg1*arg2; }
int m_val;
};
(यह क्या नीचे उल्लेख किया गया है के अलावा अन्य संचालन करता है) और अब मैं का एक वेक्टर है उपर्युक्त वस्तुएं, और मैं for_each का उपयोग कर ऑपरेटर() को कॉल करने का प्रयास कर रहा हूं, क्या ऐसा करने का कोई तरीका है? मुझे पता है कि यह bind2nd और mem_func_ref का उपयोग करके किया जा सकता है लेकिन जब केवल एक तर्क होता है लेकिन दो तर्कों के लिए मुझे कोई रास्ता नहीं मिला है।
int main()
{
std::vector<Funktor> funktors;
funktors.push_back(Funktor(10));
funktors.push_back(Funktor(20));
funktors.push_back(Funktor(30));
int arg1 = 5, arg2 = 6;
//instead of the for loop below I want to use for_each
for(std::vector<Funktor>::iterator itr = funktors.begin(); funktors.end() != itr; ++itr)
{
(*itr)(arg1,arg2);
}
}
किसी भी मदद के लिए धन्यवाद। श्रेष्ठ।
सीवी
क्या आप स्पष्ट कर सकते हैं कि आप ऐसा क्यों करना चाहते हैं? यह प्रभावी रूप से नो-ऑप की तरह दिखता है। –
@ मार्क: क्या आपका मतलब ऑपरेटर() कुछ भी नहीं करता है? यह सिर्फ मेरी कक्षा की संरचना का विचार देना था। – blueskin
@blueskin: उसका मतलब है कि 'std :: for_each' डिस्कार्ड इसके परिणामस्वरूप मक्खियों से निकलता है, इसलिए' बूल की वापसी का कभी भी उपयोग नहीं किया जाएगा, इस विशेष नमूना को व्यर्थ बना दिया जाएगा। – ildjarn