क्या दो अलग-अलग प्रकार के सेट पर std :: set_intersection करने का कोई तरीका है?दो अलग-अलग प्रकार के सेट के लिए set_intersection
std::set<X1> l_set1;
std::set<X2> l_set2;
मैं जाँच करता है कि अगर X1 और X2 बराबर हैं उनके लिए कुछ तुलनित्र परिभाषित करने में सक्षम हूँ:
मैं दो सेट है।
struct sample_comparer
{
bool operator()(const &X1 p_left, const &X2 p_right)
{
return p_left == p_right;
}
};
अब, मैं उन दो सेट पर एक सेट चौराहे करने की कोशिश:
std::set<X1> l_intersect;
std::set_intersection(l_set1.begin(), l_set1.end(), l_set2.begin(), l_set2.end(),
std::inserter(l_intersect, l_intersect.begin()), sample_comparer());
दुर्भाग्य से, मैं इस कोड को काम करने के लिए मजबूर नहीं कर सकते हैं। मुझे यह भी यकीन नहीं है कि यह संभव है, लेकिन set_intersection के description से मुझे पता है कि मैं दो अलग-अलग पुनरावृत्तियों का उपयोग कर सकता हूं।
मैंने कुछ कोड नमूने खोजने की कोशिश की जो मैं चाहता हूं, लेकिन कोई नहीं मिला? क्या कोई मुझे मेरी समस्या के लिए एक कामकाजी कोड नमूना पेश कर सकता है?
अद्यतन: त्रुटि है:
error: stl_function.h:227: no match for 'operator<' in '__x < __y'
अग्रिम धन्यवाद!
"दुर्भाग्य से, मैं इस कोड को काम करने के लिए मजबूर नहीं कर सकता।" आपको क्या कंपाइलर त्रुटियां मिलती हैं? –
आपका नमूना तुलनाकर्ता सही काम नहीं करता है। तुलनात्मक तत्वों पर सख्त कमजोर आदेश लगाने से इसे कम करने की आवश्यकता है। – tokage
क्या आप एक अतिभारित <ऑपरेटर 'bool ऑपरेटर <(x1, x2)' –