में वेक्टर की आरंभिक क्षमता std::vector
का capacity()
क्या है जो डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग करके बनाई गई है? मुझे पता है कि size()
शून्य है। क्या हम बता सकते हैं कि एक डिफ़ॉल्ट निर्मित वेक्टर ढेर स्मृति आवंटन को कॉल नहीं करता है?सी ++
इस तरह एक एकल आवंटन का उपयोग करके एक मनमानी रिजर्व के साथ एक सरणी बनाना संभव होगा, जैसे std::vector<int> iv; iv.reserve(2345);
। मान लीजिए कि किसी कारण से, मैं नहीं चाहता कि, 2345.
उदाहरण के लिए पर size()
शुरू करने के लिए लिनक्स (छ ++ 4.4.5, कर्नेल 2.6.32 amd64)
#include <iostream>
#include <vector>
int main()
{
using namespace std;
cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
return 0;
}
मुद्रित 0,10
पर चाहते हैं। क्या यह एक नियम है, या यह एसटीएल विक्रेता निर्भर है?
मानक वेक्टर की प्रारंभिक क्षमता के बारे में कुछ भी निर्दिष्ट नहीं करता है लेकिन अधिकांश कार्यान्वयन 0 का उपयोग करते हैं। –
कोई गारंटी नहीं है, लेकिन मैं किसी भी कार्यान्वयन की गुणवत्ता पर गंभीरता से सवाल करता हूं जो बिना किसी अनुरोध के स्मृति आवंटित करता है। –
@ माइकसेमोर असहमत। वास्तव में उच्च प्रदर्शन कार्यान्वयन में एक छोटा इनलाइन बफर हो सकता है, जिसमें प्रारंभिक क्षमता() को सेट करने के मामले में यह समझदारी होगी। – alastair