2011-08-09 14 views
5
explicit vector (size_type n, const T& value= T(), const Allocator& = Allocator()); 

vector<int> vec(10); 
cout << "vec.size: " << vec.size() << endl; 
for (vector<int>::const_iterator iter=vec.begin(); iter != vec.end(); ++iter) 
{ 
    cout << *iter << endl; 
} 

VS2010 से उत्पादन के लिए वेक्टर निर्माता में:सी ++ मानक: डिफ़ॉल्ट "स्थिरांक टी एंड मूल्य" प्रकार 'int'

vec.size: 10 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 

प्रश्न>: नवीनतम सी ++ मानक के आधार पर, क्या डिफ़ॉल्ट पूर्णांक है मूल्य जब हम vectorObject (size_type) का उपयोग कर वेक्टर की ऑब्जेक्ट को परिभाषित करते हैं?

जैसा कि आप देख सकते हैं, VS2010 डिफ़ॉल्ट int मान के रूप में 0 आउटपुट करता है। लेकिन मुझे नहीं पता कि सी ++ मानक द्वारा इसकी आवश्यकता है या नहीं।

+3

मैं भाषा वकीलों को मूल्य-प्रारंभिकरण, डिफ़ॉल्ट-प्रारंभिकरण और शून्य-प्रारंभिकता के बीच अंतर लाने दूंगा। लेकिन बाकी ने आश्वासन दिया कि 'टी') शून्य उत्पन्न करता है जब 'टी' एक आदिम संख्यात्मक प्रकार है। –

उत्तर

13

हां, यह आवश्यक व्यवहार है। T() किसी भी संख्यात्मक प्रकार T के लिए 0 (उदाहरण के T का प्रकार) उत्पन्न करता है।

यह मूल्य प्रारंभ, जो सांख्यिक प्रकार के लिए शून्य प्रारंभ रूप में ही है कहा जाता है।

+1

उपयोगी रूप से, यह संख्यात्मक प्रकारों के * सरणी * के लिए भी काम करना चाहिए, 'टी एक्स [7](); '। –

+1

पूर्ण मानदंडों के लिए [यह उत्तर] देखें (http://stackoverflow.com/questions/5950144/weird-c-code-snippet/5950176#5950176)। – ildjarn

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