2013-01-21 9 views
8

मैं सरणी पर एक प्रश्न का अभ्यास कर रहा हूं जिसमें मुझे अद्वितीय तत्व मिलना है। अब इसके लिए मेरा तर्क सरणी में अधिकतम तत्व ढूंढना है और उस के लिए बिटसेट को परिभाषित करना है। लेकिन समस्या यह है कि बिटसेट को निरंतर मूल्य की आवश्यकता है, तो इसे कैसे दूर किया जाए, नीचे दिए गए कुछ प्रश्न हैं:परिवर्तनीय आकार बिटसेट

ए) क्या मैं किसी भी मौके से बिट्ससेट को एक चर आकार के साथ परिभाषित कर सकता हूं?
बी) यदि नहीं, तो vector<bool> या vector<char> का उपयोग करने का सबसे अच्छा तरीका क्या है?
सी) मुझे पता है कि बूस्ट में गतिशील बिटसेट है लेकिन जैसा कि मैं सीखने के लिए ऐसा कर रहा हूं, मैं वैकल्पिक दृष्टिकोणों को जानना चाहता हूं।

+2

देखें [बूस्ट। डायनामिक बिटसेट] (http://www.boost.org/libs/dynamic_bitset/)। – ildjarn

उत्तर

8

std::bitset<N> टेम्पलेट को पहले से ही एक निश्चित आकार की आवश्यकता है। std::vector<bool> एक चर-लंबाई बिटकवेक्टर प्रदान करने का सी ++ मानक तरीका है, और यह एक बिटसेट के समान कार्यक्षमता प्रदान करता है जो बढ़ सकता है और सिकुड़ सकता है।

चाहे यह बेहतर है या vector<char> या vector<bool> का उपयोग करने के लिए बेहतर है या नहीं: vector<bool> इस लक्ष्य को पूरा करने का एक और अधिक प्रत्यक्ष तरीका है। मैं इसका उपयोग करके शुरू कर दूंगा, फिर प्रदर्शन अस्वीकार्य होने पर vector<char> पर स्विच करें। आम तौर पर, सबसे पहले, सबसे सरल कार्यान्वयन को लिखने का प्रयास करना अच्छा होता है, फिर बाद में अनुकूलित करने के लिए।

आशा है कि इससे मदद मिलती है!

+0

त्वरित उत्तर के लिए धन्यवाद .. :) ... ठीक है इसका मतलब है कि बिटसेट का उपयोग केवल तभी किया जाना चाहिए जब आकार पहले से ज्ञात हो ..? – JackSparrow

+0

@ हिमांक- यह एक मजबूत दावा है - 'std :: bitset' * * केवल तभी उपयोग किया जा सकता है जब आकार स्थिर रूप से ज्ञात हो। – templatetypedef

+0

फिर से धन्यवाद ..! और एक और संदेह है कि इस प्रकार के प्रश्न के लिए वेक्टर (बूल) और वेक्टर (चार) में सबसे अच्छा तरीका क्या होगा जब मुझे आकार ज्ञात होने पर केवल अद्वितीय खोजना होगा ..? – JackSparrow

संबंधित मुद्दे