क्या सरणियों का वेक्टर सन्निहित है?

Dec 29 2020

अगर मैं पैदा करता हूं

std::vector<std::array<double, 2>> points;
std::vector<double> points2;

मुझे पता है कि अंक 2 ढेर में डबल्स मेमोरी होल्डिंग का एक आकस्मिक हिस्सा होगा। मुझे लगता है कि अंक स्टैक के लिए डबल * मेमोरी की एक सन्निहित हिस्सा होगा? लेकिन उन सरणी ढेर में सन्निहित होगा? मान लीजिए कि मैं कुछ बिंदुओं का प्रतिनिधित्व करने के लिए युगल के जोड़े रख रहा हूं।

points2 इस तरह से मेमोरी में है: [x0 y0 X1 y1 x2 y2 ...] पॉइंट्स के बारे में क्या? इस मामले में युगल की जोड़ी को स्टोर करने का सबसे अच्छा तरीका क्या है? किसी भी टिप के लिए धन्यवाद।

जवाब

2 DanielLangr Dec 29 2020 at 04:16

क्या सरणियों का वेक्टर सन्निहित है?

नहीं, यह नहीं है। std::arrayअंत में पैडिंग या अतिरिक्त सदस्य शामिल हो सकते हैं। अधिक जानकारी, जैसे, यहाँ:

  • नेस्टेड डेटा में डेटा :: सरणियों को सन्निहित होने की गारंटी है?
  • एसटीडी का आकार :: सरणी मानक द्वारा परिभाषित है

लेकिन मेरा मानना है कि यह बहुत ही होने की संभावना नहीं है और आप बस की तुलना द्वारा ऐसी स्थितियों की जांच कर सकते 2 * sizeof(double)के साथ sizeof(std::array<double, 2>)