अगर मैं बना

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

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

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

4
lucmobz 28 पद 2020, 23:40

2 जवाब

सबसे बढ़िया उत्तर

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

नहीं ऐसा नहीं है। std::array में अंत में पैडिंग या अतिरिक्त सदस्य भी हो सकते हैं। अधिक विवरण, उदाहरण के लिए, यहां:


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

2
Daniel Langr 29 पद 2020, 00:27

यह मानते हुए कि sizeof(std::array<double, 2>), alignof(std::array<double, 2>) का एक पूर्णांक गुणज है, तो उन्हें बिना किसी पैडिंग के एक साथ संग्रहित किया जाना चाहिए।

और यह बहुत संभावना है कि यह हमेशा ऐसा ही रहेगा।

-1
Bill Lynch 29 पद 2020, 00:01