std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);
इन 3 वैक्टरों के तत्व कैसे शुरू हुए?std :: वेक्टर तत्व
int के बारे में, मैं इसका परीक्षण करता हूं और मैंने देखा कि सभी तत्व 0 बन गए हैं। क्या यह मानक है? मेरा मानना था कि प्राइमेटिव अपरिभाषित रहते हैं। डेटा सुरक्षा के लिए ओएस मेमोरी स्पष्ट से बचने के लिए, मैं 300000000 तत्वों के साथ एक वेक्टर बनाता हूं, गैर-शून्य मान देता हूं, इसे हटा देता हूं और इसे फिर से बना देता हूं। पुनर्निर्मित वेक्टर के तत्व भी 0 थे।
पुनरावर्तक के बारे में क्या? क्या डिफ़ॉल्ट कन्स्ट्रक्टर के लिए प्रारंभिक मान (0) है या प्रारंभिक मान अपरिभाषित रहता है? जब मैं इसे जांचता हूं, तो यह 0 0 इंगित करता है, लेकिन यह ओएस
जब मैं रचनाकारों को ट्रैक करने के लिए एक विशेष वस्तु बनाता हूं, मैंने देखा कि पहली वस्तु के लिए, वेक्टर डिफ़ॉल्ट कन्स्ट्रक्टर चलाता है और अन्य सभी के लिए यह प्रतिलिपि बनाता है । क्या यह मानक है?
क्या तत्वों के प्रारंभिकरण से पूरी तरह से बचने का कोई तरीका है? या मुझे अपना खुद का वेक्टर बनाना होगा? (हे भगवान, मैं हमेशा एक और वैक्टर कार्यान्वयन नहीं कहता) मैं पूछता हूं क्योंकि मैं समांतर प्रसंस्करण के साथ अल्ट्रा विशाल स्पैस मैट्रिस का उपयोग करता हूं, इसलिए मैं push_back() का उपयोग नहीं कर सकता और निश्चित रूप से मैं बेकार प्रारंभिक नहीं चाहता, जब बाद में मैं बदल जाऊंगा महत्व।
मेरा मानना है कि _C++ 11_ इसे एक डिफ़ॉल्ट प्रारंभिक मानदंड के बजाय 'डिफ़ॉल्ट प्रारंभिक मानों' में बदलता है, इसके बाद कई प्रतियां होती हैं। –
@ एटिला सी ++ 11 से उद्धरण के लिए मेरा उत्तर देखें। – pmr
हां सी ++ 11 इसे डिफ़ॉल्ट कन्स्ट्रक्टर में बदल देता है। की पुष्टि। – Chameleon