मैं सेट का उपयोग कर रहा हूं। मैं कुंजी के रूप में एक कस्टम संरचना का उपयोग करें। मैं एक मूल्य डाल रहा हूं और सम्मिलित मूल्य ढूंढने की कोशिश कर रहा हूं। लेकिन यह तत्व कभी नहीं लगता है।सी ++ std :: सेट फ़ंक्शन ओवरलोडिंग == ऑपरेटर
मैंने दोनों == ऑपरेटर और < ऑपरेटर को ओवरराइड कर दिया है।
यहाँ संरचना के कोड है:
struct distance_t
{
public:
int id;
double distance;
bool operator<(const distance_t& rhs) const
{
if(distance < rhs.distance)
return true;
else
return false;
}
bool operator==(const distance_t& rhs)
{
if(id == rhs.id)
return true;
else
return false;
}
};
और यह मुख्य
int main()
{
set<distance_t> currentSet;
distance_t insertDistance;
insertDistance.id =1;
insertDistance.distance = 0.5;
currentSet.insert(insertDistance);
distance_t findDistance;
findDistance.id = 1;
assert(currentSet.find(findDistance) != currentSet.end());
}
यह हमेशा ज़ोर बयान में विफल रहता है के कोड है। मैं क्या गलत कर रहा हूं?
संपादित करें- अब मैं समझता हूं कि यह == ऑपरेटर का उपयोग नहीं करता है। मैं यही चाहता हूं। मुझे दूरी से आदेश देने के लिए डेटा संरचना की आवश्यकता है। लेकिन मैं आईडी का उपयोग कर इसे हटाने में सक्षम होना चाहिए। क्या ऐसा करने के लिए कोई साफ तरीका है या पहले से ही मौजूदा डेटास्ट्रक्चर है?
एक शैली का सुझाव: जहां आपके पास 'if (expr) सत्य है; अन्यथा झूठी वापसी; 'आप बस' वापसी expr; ' – Blastfurnace
बस 'वापसी आईडी
@ ब्लास्टफर्नेस आपको या तो ब्रांड्स की आवश्यकता नहीं है। –