2010-12-12 16 views
8

मैं एक परियोजना में unordered_set का उपयोग करना चाहता हूं।बूस्ट - unordered_set ट्यूटोरियल/उदाहरण/कुछ भी?

हालांकि, इसके लिए दस्तावेज़ या तो अधूरा या सिर्फ तकनीकी संदर्भ है, कोई उदाहरण नहीं।

क्या कोई भी ऑनलाइन संसाधनों के लिंक प्रदान कर सकता है जो इसके साथ सौदा करते हैं? पुस्तकों का भी स्वागत है, अधिमानतः मुफ्त। Google खोज ने मूल्य के कुछ भी नहीं लौटाया।

धन्यवाद!

उत्तर

7

इस पर बहुत कम दस्तावेज़ हैं क्योंकि यह std::set जैसा व्यवहार करता है, अपवाद के साथ कि इसे तुलनात्मक फ़ंक्शन के बजाय एक हैशिंग और बराबर फ़ंक्शन की आवश्यकता होती है। बस std::set के लिए उदाहरण देखें, और उन्हें std::unordered_set के साथ बदलें और आपको ठीक होना चाहिए।

यदि आपको हैशिंग फ़ंक्शन लिखने की आवश्यकता है, तो दस्तावेज़ों में उदाहरण हैं, यानी this one

+0

यह बहुत एसटीडी :: सेट समान एक इंटरफेस है, लेकिन अपने व्यवहार अलग है। जिस तरह से हैशिंग ने इसे तेज कर दिया है, वैसे भी ऐसे तरीके भी हैं जिनमें बूस्ट की 'unordered_set' धीमी हो सकती है, जैसे: https://svn.boost.org/trac/boost/ticket/3693 –

+0

@ जॉन: यह है प्रदर्शन विशेषताओं अलग हैं, और इसे आदेशित तरीके से पुनरावृत्त नहीं किया जा सकता है (ठीक है, इसे 'unordered_set' कहा जाता है)। अन्यथा यह वास्तव में 'std :: set' करता है जैसा व्यवहार करता है। –

+0

मिट प्रदर्शन समस्या को तब से तय किया गया है: बढ़ावा से उद्धरण 1.61_0: नोट्स: पुराने संस्करणों में यह अक्षम हो सकता है क्योंकि इसे लौटाए गए इटरेटर की स्थिति खोजने के लिए कई बाल्टी खोजना पड़ता था। डेटा संरचना बदल दी गई है ताकि यह अब मामला न हो, और वैकल्पिक मिटाने के तरीकों को बहिष्कृत कर दिया गया है। – Sid

4

बूस्ट कंटेनर प्रभावी रूप से सी ++ मानक लाइब्रेरी तकनीकी रिपोर्ट (जिसे TR1 के नाम से जाना जाता है) द्वारा निर्दिष्ट इंटरफ़ेस का कार्यान्वयन प्रभावी रूप से कार्यान्वित किया जाता है, जैसा कि बूस्ट डॉक्स में उल्लिखित है। वे अब तक नए मानकों के मसौदे के मसौदे का हिस्सा हैं। यदि आप tr1 और unordered_set की खोज करते हैं तो Google कुछ और दस्तावेज़/उदाहरण बदल देता है। मैं MSDN संदर्भ है, जो भी कुछ नमूने है की तरह है:

http://msdn.microsoft.com/en-us/library/bb982739.aspx सबसे अधिक आम उपयोग के लिए

http://www.google.de/search?q=tr1+unordered_set

8

कोड:

#include <boost/unordered_set.hpp> 
using boost::unordered_set; 
using std::string; 
using std::cout; 
using std::endl; 

int main (void) 
{ 
    // Initialize set 
    unordered_set<string> s; 
    s.insert("red"); 
    s.insert("green"); 
    s.insert("blue"); 

    // Search for membership 
    if(s.find("red") != s.end()) 
     cout << "found red" << endl; 
    if(s.find("purple") != s.end()) 
     cout << "found purple" << endl; 
    if(s.find("blue") != s.end()) 
     cout << "found blue" << endl; 

    return 0; 
} 

आउटपुट

found red 
found blue 

अधिक जानकारी

http://www.cplusplus.com/reference/unordered_set/unordered_set/find/