मेरे पास std::set<int>
है, इस सेट में सबसे बड़ा इंट खोजने का सही तरीका क्या है?मैं std :: set <int> में सबसे बड़ा int कैसे ढूंढूं?
उत्तर
आप किस तुलनित्र का उपयोग कर रहे हैं?
डिफ़ॉल्ट के लिए यह काम करेगा:
if(!myset.empty())
*myset.rbegin();
else
//the set is empty
यह भी लगातार समय के बजाय max_element समाधान की तरह रैखिक हो जाएगा।
मेरा मानना है कि आप std::max_element
लिए देख रहे हैं:
max_element()
समारोह रेंज [प्रारंभ, समाप्ति) में सबसे बड़ा तत्व को एक iterator देता है।
यह यह करने के लिए धीमी गति से जिस तरह की तरह लगता है में int max
में मूल्य को बचाने के। –
यह मेरे आराम क्षेत्र के बाहर एक प्रश्न का उत्तर देने के लिए मिलता है :) मुझे नहीं पता था कि एक 'std :: set' डिफ़ॉल्ट रूप से क्रमबद्ध किया गया था। चूंकि मैंने माना कि यह एक ओ (एन) एल्गोरिदम को हल नहीं किया गया था, केवल एकमात्र व्यावहारिक विकल्प प्रतीत होता था। अब मुझे पता है कि मुझे क्या पता है, हाँ यह जवाब इष्टतम नहीं है। –
सेट हमेशा आदेश दिया जाता है। मान लें कि आप डिफ़ॉल्ट तुलना (कम) का उपयोग कर रहे हैं, बस सेट में अंतिम तत्व को पकड़ें। rbegin() उपयोगी हो सकता है।
सी ++ मानक आदेश गारंटी देता है : http://stackoverflow.com/q/8833938/895245 –
चूंकि सेट डिफ़ॉल्ट रूप से आरोही क्रम में तत्व को टाइप करता है, बस सेट में अंतिम तत्व चुनें।
इससे पहले कि आप में push()
अपने set<int>
के बाद से max_element पता नहीं कर सकते हैं कि सीमा क्रमबद्ध किया जाता है, वैश्विक चर
कृपया बताएं कि आपका उत्तर क्या करना है, और शायद एक कोड उदाहरण प्रदान करें? मैं उत्सुक हूं कि आप किसके साथ आते हैं! – andrewgu
- 1. इटरेटर वैधता, std :: set
- 2. std :: set
- 3. std :: set
- 4. std :: set
- 5. मैं std :: atomic <unsigned int>
- 6. ++ std :: परमाणु <int>
- 7. std :: back_inserter एक std :: set के लिए?
- 8. std :: vector <int> से 0
- 9. मैं ViewByTag कैसे ढूंढूं?
- 10. पायथन समकक्ष :: std :: set और std :: multimap
- 11. std :: multimap <key, value> और std :: map <key, std :: set <value>>
- 12. <set> एसवीजी में
- 13. std :: set :: insert, मैं कितना बुरा संकेत दे सकता हूं?
- 14. std :: set start() और std :: सेट iterator O (logn)
- 15. `std :: set` के साथ क्या गलत है?
- 16. क्या std :: set :: iterator और std :: set :: const_iterator के बीच कोई परिचालन अंतर है?
- 17. std :: जोड़ी <int, int> बनाम स्ट्रक्चर दो int के
- 18. एन संख्याओं का सबसे बड़ा और दूसरा सबसे बड़ा पता
- 19. मैं एकाधिक कॉलम में डुप्लिकेट कैसे ढूंढूं?
- 20. मैं अपना पैकेज कैसे ढूंढूं?
- 21. स्ट्रिंग कार्यान्वयन में सबसे बड़ा पालिंड्रोम ढूंढना
- 22. मानचित्र <int,int> डिफ़ॉल्ट मान
- 23. सबसे बड़ा सबमिट्रिक्स एल्गोरिदम
- 24. std :: परमाणु <int> घटती और तुलना
- 25. सूची में सबसे अधिक संख्या संख्या खोजें <int>
- 26. सबसे बड़ा तत्व एक BST
- 27. UIView। मैं रूट सुपरव्यू फास्ट कैसे ढूंढूं?
- 28. क्या सी # में std :: set के बराबर है?
- 29. सबसे बड़ा अजगर परियोजनाओं
- 30. क्या हर मामले में `std :: set` सॉर्ट तत्व है?
अधिकतम तत्व ढूँढना निरंतर समय है, हां, लेकिन सेट को पॉप्युलेट करना नहीं है, क्योंकि यह डालने पर सॉर्ट कर रहा है। एक unordered_set निरंतर समय सम्मिलित है, लेकिन अधिकतम तत्व के लिए एक खोज की आवश्यकता होगी। – crunchdog
लेकिन मूल प्रश्न "मेरे पास एक std :: set" के साथ शुरू होता है, इसलिए हम मान सकते हैं कि हमारी खोज तंत्र के बावजूद गैर-निरंतर सम्मिलन समय व्यतीत किया जा रहा है। चूंकि आपने पहले ही कीमत चुकाई है, फिर भी निरंतर समय की खोज विधि का उपयोग करके इसका लाभ क्यों नहीं लेते? – Darryl
@ क्रंचडॉग: 'unordered_set' में केवल स्थिर समय औसत-मामला है, लेकिन इसमें रैखिक समय सबसे खराब मामला है, जो' सेट' – user102008