प्रारंभिक सूचियाँ और std::array: एक GCC बग
C मानक लाइब्रेरी में std::array वर्ग एक निश्चित प्रदान करता है- आकार सरणी कंटेनर. आमतौर पर यह माना जाता है कि यह वर्ग आरंभीकरण सूचियों का समर्थन करता है। array<:string> strings = { "a", "b" }; std::array<:string> strings({ "a", "b" });
std::vector के साथ काम करने वाली प्रारंभिक सूचियों के बावजूद, std::array के साथ यह व्यवहार बढ़ गया है सी मानक या संभावित जीसीसी मुद्दे के बारे में प्रश्न। इसकी संरचना इस प्रकार है:
std::array<:string> strings = { "a", "b" };
std::array<:string> strings({ "a", "b" });
std::vector के विपरीत, जिसमें इनिशियलाइज़र सूचियों को स्वीकार करने वाला एक कंस्ट्रक्टर होता है, std::array में ऐसे कंस्ट्रक्टर का अभाव होता है।
एग्रीगेट इनिशियलाइज़ेशन
हालांकि std::array में इनिशियलाइज़ेशन सूचियों के लिए कोई स्पष्ट कंस्ट्रक्टर नहीं है, इसे C 11 में एक एग्रीगेट प्रकार माना जाता है। इस प्रकार, इसे एग्रीगेट इनिशियलाइज़ किया जा सकता है। हालाँकि, संरचना के भीतर सरणी को आरंभ करने के लिए, घुंघराले ब्रेसिज़ का एक अतिरिक्त सेट आवश्यक है:
template
struct std::array {
T a[size];
};
संभावित जीसीसी बगसी मानक ऐसे आरंभीकरण में अतिरिक्त घुंघराले ब्रेसिज़ को हटाने की अनुमति देता है। इसलिए, यह संभव है कि जीसीसी की उनके बिना इस सिंटैक्स को संभालने में असमर्थता एक बग है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3