सी ++ 11 में, std :: वेक्टर में निर्माता vector(size_type n)
है जो डिफ़ॉल्ट रूप से n
आइटमों का निर्माण करेगा, जिसका उपयोग डिफ़ॉल्ट रचनात्मक, जंगम, गैर-प्रतिलिपि योग्य वर्गों के साथ किया जा सकता है।सी ++ 11 में कोई वेक्टर (आकार_ प्रकार एन, कॉन्स आवंटक और आवंटन) क्यों नहीं है?
हालांकि, हर दूसरे वेक्टर निर्माता के विपरीत, वहाँ कोई संस्करण है कि एक संभाजक लेता है, और मैं निम्नलिखित का सहारा लिया:
// Foo is default constructible and moveable, but not copyable
const int n = 10; // Want 10 default constructed Foos
std::vector<Foo, CustomAllocator> foos(allocator);
foos.reserve(n);
for (int i = 0; i < n; ++i)
foos.emplace_back();
वहाँ एक बेहतर तरीका यह पूरा करने के है? क्या vector(size_type n, const Allocator& alloc)
मानक से छोड़ा गया कोई विशिष्ट कारण है? size_type n
निर्माता के तीन तर्क संस्करण का उपयोग करने
const int n = 10;
std::vector<Foo, Alloc> foos(allocator);
foo.resize(n);
एक अन्य विकल्प है::
विनिर्देश में एक दोष की तरह लगता है। उस पर एक रिपोर्ट दर्ज करें, अगर कोई पहले से नहीं है। –
@ निकोलबोलस ऐसे दस्तावेज हैं जो रिपोर्ट दर्ज करने की प्रक्रिया का वर्णन करते हैं? – rkjnsn
कोई बात नहीं। मेरी पोस्ट देखें –