ऐसा लगता है कि मैं एक std :: vector < std :: जोड़ी < int, std :: string > > सॉर्ट कर सकता है, और यह int मान के आधार पर क्रमबद्ध होगा। क्या यह एक अच्छी तरह से परिभाषित चीज है? क्या std :: pair के पास इसके तत्वों के आधार पर एक डिफ़ॉल्ट क्रम है?std :: pair <int, std :: string> अच्छी तरह से परिभाषित करने का आदेश है?
उत्तर
std::pair
शब्दावली तुलना का उपयोग करता है: यह पहले तत्व के आधार पर तुलना करेगा। यदि पहले तत्वों के मान बराबर हैं, तो यह दूसरे तत्व के आधार पर तुलना करेगा।
सी ++ 03 मानक में परिभाषा (खंड 20.2.2) है:
template <class T1, class T2>
bool operator<(const pair<T1, T2>& x, const pair<T1, T2>& y);
Returns: x.first < y.first || (!(y.first < x.first) && x.second < y.second).
तुलना ऑपरेटर। यह शब्दावली तुलना का उपयोग करता है: वापसी मान सही है यदि x का पहला तत्व y के पहले तत्व से कम है, और गलत है यदि y का पहला तत्व x के पहले तत्व से कम है। यदि इनमें से कोई भी मामला नहीं है, तो ऑपरेटर < एक्स और वाई के दूसरे तत्वों की तुलना करने का परिणाम देता है। इस ऑपरेटर का उपयोग केवल तभी किया जा सकता है जब टी 1 और टी 2 दोनों कम से कम कॉम्पैरेबल हों। यह एक वैश्विक कार्य है, सदस्य कार्य नहीं।
ऐसा लगता है कि यह वास्तव में दोनों तत्वों का संयोजन है।
, std::pair
एक operator<
इस तरह परिभाषित किया गया है कि के लिए दो जोड़े x और y, यह रिटर्न
x.first < y.first || (!(y.first < x.first) && x.second < y.second)
मैं अगर कुछ नहीं कर रहा हूँ यह 2003 मानक का भी हिस्सा है। मुझे यह भी ध्यान रखना चाहिए कि यदि संकलित खुद कम नहीं हैं तो यह संकलित नहीं होगा।
हां। operator<()
std::pair<T1, T2>
के लिए परिभाषित किया गया है, यह मानते हुए कि T1
और T2
दोनों तुलनात्मक हैं।
- 1. std :: pair या std :: tuple
- 2. std :: pair क्या है?
- 3. स्ट्रिंग द्वारा std :: vector <std :: pair <std :: string, bool >> को सॉर्ट करना?
- 4. std :: vector <int> से 0
- 5. ++ std :: परमाणु <int>
- 6. std :: sub_match <T> सार्वजनिक रूप से std :: pair <T, T> से क्यों प्राप्त होता है?
- 7. std :: तरह हमेशा std :: स्वैप
- 8. std :: pair में iterators क्यों नहीं है?
- 9. मैं std :: atomic <unsigned int>
- 10. std :: context_wrapper का उपयोग std :: map
- 11. std :: जोड़ी <int, int> बनाम स्ट्रक्चर दो int के
- 12. std :: std :: function से बांधें?
- 13. std :: std :: weak_ptr key
- 14. std :: multimap
- 15. std :: का उपयोग कर std :: सूचियों छँटाई तरह
- 16. क्या std :: map और std :: set intersect/diff करने का कोई तरीका है?
- 17. मुख्य परिभाषित `मुख्य (std :: वेक्टर <std::string> तर्क) क्यों नहीं है?
- 18. std :: string <std::string>
- 19. std :: वेक्टर <std::string> क्रैश
- 20. std :: set
- 21. जोड़ी <int, int> और कस्टम ऑपरेटर के साथ BOOST_CHECK_EQUAL <<
- 22. std :: स्ट्रिंग या std :: वेक्टर <char> कच्चे डेटा
- 23. std :: स्ट्रिंग कुंजी बनाम int कुंजी के साथ std :: मानचित्र का उपयोग करने की लागत?
- 24. std :: परमाणु <int> घटती और तुलना
- 25. `std :: array <T, n>`
- 26. std :: streampos, std :: streamoff और std :: लंबे समय तक intsize?
- 27. std :: सूची से तत्वों को समाशोधन करने का आदेश क्या है?
- 28. क्या यह एक ही पते पर प्लेसमेंट के लिए अच्छी तरह से परिभाषित/कानूनी है?
- 29. std :: valarray की तरह भविष्य क्या है?
- 30. सी ++ 11/जी ++: std :: योग्यता लैम्ब्डा में आवश्यक है, हालांकि "नेमस्पेस std का उपयोग करके"