मैं सिर्फ सीख रहा हूं और शायद एक बेवकूफ सवाल है।std :: सूची अनपेक्षित परिणाम देने का आकार बदलती है
मेरे पास 2 कंटेनर हैं, एक वेक्टर है और एक सूची है। वे दोनों इंट्स 1,2,3,4 से भरे हुए हैं। प्रारंभ होने के बाद मैं कंटेनर का आकार सात के आकार में बदलता हूं, फिर कंटेनर की सामग्री प्रिंट करता हूं।
#include <iostream>
#include <vector>
#include <list>
int main()
{
std::list<int> lst= {1,2,3,4};
std::vector<int> vec = {1,2,3,4};
lst.resize(7);
vec.resize(7);
for (auto p = lst.begin(); p!=lst.end(); ++p)
std::cout<<"List: "<<*p<<std::endl;
for (auto p = vec.begin(); p!=vec.end(); ++p)
std::cout<<"Vector: "<<*p<<std::endl;
return 0;
}
उत्पादन मैं हो रही है में:
List: 1
List: 2
List: 3
List: 4
List: 0
List: 1994995248
List: 0
Vector: 1
Vector: 2
Vector: 3
Vector: 4
Vector: 0
Vector: 0
Vector: 0
मैं स्पष्ट रूप से सूची है कि मैं 0 द्वारा जोड़ा जा रहा इस से बचने के लिए बताने के लिए है?
आप किस कंपाइलर का उपयोग कर रहे हैं? मुझे लगता है कि इसे यहां पुन: उत्पन्न करने में सक्षम नहीं है: http: //ideone.com/9BwQJ6। यदि आप आकार बदलते हैं तो मान को निर्दिष्ट नहीं करते हैं, तो उन्हें मूल्य मानने के लिए माना जाता है। – taocp
http://www.cplusplus.com/reference/list/list/resize/ – Nic007
अच्छा, वास्तव में ऐसा लगता है कि इसे स्पॉट भरने के लिए डिफ़ॉल्ट मान का उपयोग करना चाहिए, लेकिन आप 'lst.resize (7, 0) को कॉल करने का प्रयास कर सकते हैं। ; ', बस यह देखने के लिए कि क्या होगा। – cxyzs7