उस मामले में, केवल मूल्य इसे सेट के साथ false
है:
bool* a = new bool[100000]();
जिसके अनुसार, मुझे यकीन है कि तुम क्यों लगता है कि आप एक पाश उपयोग नहीं कर सकते नहीं कर रहा हूँ। वे एक कारण के लिए हैं। आपको केवल तैयार किए गए फ़ंक्शन fill
या fill_n
(स्वाद के आधार पर) का उपयोग करना चाहिए।
new
का उपयोग करते हुए नोट "कच्चे" जैसे भयानक प्रोग्रामिंग अभ्यास है। का प्रयोग करें एक std::vector<bool>
*:
std::vector<bool> v;
v.resize(100000);
std::fill(v.begin(), v.end(), true); // or false
या:
std::vector<bool> v;
v.reserve(100000);
std::fill_n(std::back_inserter(v), 100000, true); // or false
* बेशक, std::vector<bool>
उचित कंटेनर इंटरफ़ेस तोड़ने के लिए तो वास्तव में bool
की दुकान नहीं है होता है। यदि यह समस्या है तो इसके बजाय std::vector<char>
का उपयोग करें।
मैं एक सदिश उपयोग कर रहा था क्या कर सकते हैं, लेकिन यह बहुत धीमी थी। तो मैं एक तेज समाधान की तलाश में हूं। लेकिन मैंने भरने का उपयोग नहीं किया, इसलिए मुझे लगता है कि यह तेज़ हो सकता है। –
@BSeven: मुझे गंभीरता से संदेह है कि आपका दावा सत्य है और आप ऐसी स्थिति में हैं जहां वैसे भी इससे कोई फर्क नहीं पड़ता। 'Std :: vector' का उपयोग करें, यह आपके लिए प्रबंधन को संभालता है ताकि आपको आसानी से लीक से बचा न जाए। क्या आपने अपना पूरी तरह से पूरा रिलीज-बिल्ड एप्लिकेशन प्रोफाइल किया है और पाया है कि 'std :: vector' का उपयोग करके सुझाए गए परिणाम आपके आवेदन का सबसे धीमा हिस्सा था? (संख्या) – GManNickG
@ सीबीवेन: किस बिंदु पर वेक्टर इतनी धीमी थी? रिलीज संकलन में, यदि सही तरीके से उपयोग किया जाता है तो यह कच्चे सरणी के रूप में तेज़ होना चाहिए। – Philipp