यह एक वेक्टर 5 तत्वों के साथ 10 vector<int>
, उन में से हर एक से युक्त बनाता है::
मेरे कोड स्निपेट इस प्रकार है
std::vector<std::vector<int>> v(10, std::vector<int>(5));
ध्यान दें कि यदि बाहरी कंटेनर का आकार तय किया गया है, आप इसके बजाय std::array
का उपयोग करना चाहते हैं। ध्यान दें कि प्रारंभिकता अधिक वर्बोज़ है:
std::array<std::vector<int>, 10> v{{std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5),
std::vector<int>(5)
}};
यह भी ध्यान दें कि सरणी की सामग्री सरणी का हिस्सा हैं। यह आकार है, जैसा कि sizeof
द्वारा दिया गया है, vector
संस्करण से बड़ा है, और कोई ओ (1) चाल या स्वैप ऑपरेशन उपलब्ध नहीं है। एक std::array
एक निश्चित आकार, स्वचालित भंडारण सादा सरणी के समान है।
ध्यान दें कि, जैसा कि @chris टिप्पणियों में सुझाव देता है, आप के बाद के बाद एक डिफ़ॉल्ट प्रारंभिकरण के तत्वों को सेट करना चुन सकते हैं, उदा।
std::array<std::vector<int>, 10> v; // default construction
std::fill(v.begin(), v.end(), std::vector<int>(5));
अन्यथा, आप सेट/अलग-अलग तत्वों को बदल सकते हैं:
v[0] = std::vector<int>(5); // replace default constructed vector with size 5 one
v[1].resize(42); // resize default constructed vector to 42
और इतने पर std::fill
साथ अगर वे सब कर रहे हैं एक ही मूल्य है करने के लिए।
'new' का उपयोग न करें। एक 'std :: array, 10> 'यदि आप आकार बदल नहीं रहे हैं और पॉइंटर्स की वास्तविक आवश्यकता के बारे में मेरे संदेह सही हैं तो आप जो पूछ रहे हैं उससे अधिक लगता है। –
chris
सी ++ समतुल्य 'वेक्टर> 'होगा। इसका उपयोग करने का कोई कारण नहीं है? –
juanchopanza
क्या आप कृपया मुझे और जानकारी दें? या एक नमूना कोड? – remo