C++

2010-11-22 11 views
5

मैं C++ "में" की तरह डेल्फी सेट के फायदे उपयोग करने की आवश्यकता में सेट की तरह डेटा संरचना क्या है, लेकिन अगर वहाँ ग में सेट ++C++

मैं की तरह एक डेटा संरचना है मैं नहीं जानता पता है कि मैं इसके बजाय एक सरणी का उपयोग कर सकता हूं, लेकिन जैसा कि मैंने कहा है कि मैं "इन" जैसे सेट फायदे का उपयोग करना चाहता हूं, तो क्या सी ++ में सेट जैसे डेटा संरचना में कोई भी निर्मित है?

हां, तो कृपया बताएं कि यह कैसे उपयोग करने के लिए करते हैं, तो मैं अभी भी C++

एक स्टार्टर हूँ यदि नहीं, वहाँ किसी भी तरह से यह (exept सरणी के बाद से मैं यह पता) का प्रतिनिधित्व करने के लिए है। अग्रिम :)

+4

['std :: set'] (http://www.sgi.com/tech/stl/set.html) एक सेट है। इसे प्राप्त करने के लिए आप '#' शामिल कर सकते हैं। – birryree

+1

"सेट" और इसके मूल ऑपरेटरों (में, +, -, *) पास्कल (और डेल्फी) के लिए विशिष्ट हैं। सी ++ टेम्पलेट्स का उपयोग करके कुछ समान रूप से लागू करता है, लेकिन उनमें पास्कल कार्यान्वयन की लालित्य की कमी है (हालांकि अभी पास्कल सेट 255 तत्वों तक सीमित हैं) –

+2

@ldsandon: 256 तत्व - 0..255। :-) –

उत्तर

10

वहाँ एक मानक पुस्तकालय std::set बुलाया कंटेनर ... मैं डेल्फी पता नहीं है, लेकिन सेट में एक सरल तत्व आपरेशन find पद्धति का उपयोग करके और end साथ परिणाम की तुलना द्वारा लागू किया जाएगा है:

std::set<int> s; 
s.insert(5); 
if (s.find(5) != s.end()) { 
    // 5 is in the set 
} 

अन्य संचालन मानक पुस्तकालय में एल्गोरिदम के रूप में लागू किया जा सकता (std::union, std::difference ...)

0

हाँ, वहाँ एक सी ++ एसटीएल set कंटेनर वर्ग des है पी पर cribed। स्ट्रॉस्ट्रप के टीसी ++ पीएल (स्पेशल एड) के 491।

2

सी ++ में समान रूप से एकीकृत कुछ भी नहीं है। आपकी जरूरतों के आधार पर आप थोड़ा झंडे और बिटवाई ऑपरेशंस या std::bitset मानक कंटेनर (निश्चित रूप से std :: set के अलावा) का उपयोग करना चाह सकते हैं। यदि आप सी ++ बिल्डर का उपयोग कर रहे हैं तो वहां एक कक्षा भी है जो डेल्फी सेट को अनुकरण करती है - बेससेट या सेटबेस या इसी तरह की चीज़ के लिए System.hpp खोजें - मुझे सही नाम याद नहीं है।

0

एसटीएल एल्गोरिथ्म, है, लेकिन एक दूसरे पर छाँटे स्रोत श्रेणी के लिए नहीं निम्नलिखित From MSDN

set_difference तत्वों है कि एक हल कर स्रोत श्रेणी के हैं के सभी को एकजुट करती है एक एकल, हल कर गंतव्य रेंज है, जहां में ऑर्डरिंग मानदंड बाइनरी भविष्यवाणी द्वारा निर्दिष्ट किया जा सकता है।

set_intersection तत्वों है कि दोनों अनुसार क्रमबद्ध स्रोत के हैं के सभी के लिए एक एकल में पर्वतमाला को एकजुट करती है गंतव्य रेंज, जहां आदेश कसौटी एक द्विआधारी विधेय द्वारा निर्दिष्ट किया जा सकता अनुसार क्रमबद्ध।

set_symmetric_difference तत्वों है कि एक के हैं के सभी को एकजुट करती है, लेकिन दोनों नहीं, क्रमबद्ध स्रोत एक एकल, हल कर गंतव्य रेंज, जहां आदेश कसौटी एक द्विआधारी विधेय द्वारा निर्दिष्ट किया जा सकता में पर्वतमाला की।

set_union तत्वों है कि दो क्रमबद्ध स्रोत कम से कम एक से संबंध रखते हैं के सभी में पर्वतमाला एक करता है एक एकल, गंतव्य रेंज, जहां आदेश कसौटी एक द्विआधारी विधेय द्वारा निर्दिष्ट किया जा सकता अनुसार क्रमबद्ध।

+0

ये एल्गोरिदम हैं जो ऑर्डर किए गए कंटेनरों पर चलते हैं (इटरेटर के जोड़े पर ऑर्डर करने वाले तत्वों को सटीक होने के लिए), कंटेनर स्वयं नहीं। –