से डुप्लिकेट को हटा रहा है मैं एक वेक्टर से डुप्लिकेट को हटाने का एक तरीका ढूंढ रहा हूं (उसे उसे GreatVector: D) कहें। मैं std :: sort का उपयोग नहीं कर सकता, इसके बाद std :: अद्वितीय है क्योंकि मेरी ऑब्जेक्ट्स को सॉर्ट करने का कोई तरीका नहीं है।एक गैर-क्रमबद्ध वेक्टर
theGreatVector कुछ vector<Item*>
(smallVectors)
मैं vector<Item*>
के लिए == की एक अधिभार मिला तो मैं उपयोग कर सकते हैं
मैं सक्षम डी ओ (n²) में कुछ बनाना चाहता हूँ होता है, लेकिन मैं समय दक्षता की जरूरत है (theGreatVector.size() 10⁵ हो सकता है या 10⁶)
अभी मैं क्या मिल गया है कि की तरह कुछ है (मेरे वेक्टर मैं भरने केवल अगर यह में smallOne नहीं है):
for(i=0;i<size;i++)
{
vector<Item*>smallOne = FindFacets(i)
if(smallOne doesnt belong to GreatOne) // this line already in O(n) :/
{
theGreatOne.push_back(smallOne);
}
}
यदि नलॉग (एन) + एन या एन² से कम कुछ भी करने के लिए ऐसा कोई तरीका है, तो यह बहुत अच्छा होगा!
धन्यवाद एक बहुत
Azh
यदि आपके पास मूल्यों की समानता है, तो संभव है कि आप कुछ ऑर्डरिंग भी परिभाषित कर सकें और एक प्रकार का प्रदर्शन कर सकें। – juanchopanza
आपका क्या मतलब है कि आप अपनी वस्तुओं को सॉर्ट नहीं कर सकते? आप प्रत्येक डेटा सदस्य को 'std :: tuple' में हमेशा' std :: tie 'कर सकते हैं और उस – TemplateRex
पर लेक्सिकोग्राफिक ऑर्डरिंग का उपयोग कर सकते हैं' = ''वेक्टर- ' पर क्या करते हैं? क्या यह 'आकार' और सूचक-मूल्यों की तुलना करता है, या क्या यह पॉइंटर्स को कम करता है और अंतर्निहित मूल्य की तुलना करता है? आपको ऐसा क्यों लगता है कि '<'समान रूप से काम नहीं कर सकता, क्या' आइटम 'किसी तरह से अजीब है? "डुप्लिकेट" से आपका मतलब है 'वेक्टर
- ', या' वेक्टर
- 'में से एक में डुप्लिकेट' आइटम * ', या' वेक्टर
- ' में से किसी एक में 'आइटम *' में डुप्लिकेट 'आइटम'' (मुझे लगता है सबसे पहला)? क्या 'ग्रेटऑन' का आदेश महत्वपूर्ण है? आप इसमें कितनी बार जोड़ते हैं? पढ़ें? संशोधित करें? किस पैटर्न में (बहुत सारे जोड़े, फिर कुछ भी पढ़ा नहीं जाता है?) –
Yakk