हां, वहां (बहुत अधिक) है। std::unique_ptr<T[]>
। प्राथमिक टेम्पलेट इस मामले है, जो उचित इंटरफेस प्रदान करता है के लिए एक आंशिक विशेषज्ञता (ऑपरेटर []
, कोई ऑपरेटर *
आदि)
वैकल्पिक रूप से, आप अपने खुद के वर्ग में std::vector
लपेटो और इसके इंटरफेस को सीमित कर सकते हैं। तुम भी कर सकता है कि std::vector
से एक वर्ग पाने गैर सरकारी विरासत और प्रकाशन केवल इसके इंटरफेस के प्रासंगिक भागों का उपयोग करके:
template <class T, class A = std::allocator<T>>
struct FixedVector : private std::vector<T, A>
{
using FixedVector::vector::vector;
using FixedVector::vector::operator=;
using FixedVector::vector::get_allocator;
using FixedVector::vector::at;
using FixedVector::vector::front;
using FixedVector::vector::back;
using FixedVector::vector::data;
using FixedVector::vector::begin;
using FixedVector::vector::cbegin
using FixedVector::vector::end;
using FixedVector::vector::cend;
using FixedVector::vector::empty;
using FixedVector::vector::size;
using FixedVector::vector::operator[];
};
क्यों आप इस की ज़रूरत है? आप या तो वेक्टर या सरणी का उपयोग क्यों नहीं कर सकते? – user463035818
मुझे अपने प्रकार पसंद हैं जितना संभव हो सके सटीक होना। मैं कुछ 'वेक्टर' का उपयोग करने की योजना बना रहा हूं, लेकिन इसके आकार को केवल एक बार सेटिंग करता हूं और फिर केवल इसके मान बदलता हूं। मैं पसंद करता हूं कि अगर मैं टिप्पणी के माध्यम से टाइप सिस्टम के माध्यम से इसे दस्तावेज कर सकता हूं। – tohava
@ साइबर - लेकिन मैं इसे केवल गैर-लोकप्रिय मूल्य प्रकारों के लिए नहीं चाहता हूं, मैं इसे सभी प्रकार के लिए चाहता हूं। – tohava