std::array<std::array<T,N>, M>
में डेटा सम्मिलित होने की गारंटी है? उदाहरण के लिए:क्या नेस्टेड std :: arrays में डेटा संगत होने की गारंटी है?
#include <array>
#include <cassert>
int main()
{
enum {M=4, N=7};
typedef std::array<char,N> Row;
typedef std::array<Row, M> Matrix;
Matrix a;
a[1][0] = 42;
const char* data = a[0].data();
/* 8th element of 1D data array should be the same as
1st element of second row. */
assert(data[7] == 42);
}
क्या जोर से सफल होने की गारंटी है? या, इसे एक और तरीका रखने के लिए, क्या मैं के अंत में कोई पैडिंग नहीं कर सकता हूं?
संपादित करें: बस स्पष्ट होना, इस उदाहरण के लिए, मैं पूरे मैट्रिक्स का डेटा सन्निहित होना चाहता हूँ।
भले ही भंडारण संगत हो, मुझे विश्वास है कि आप एलियासिंग नियमों का सामना कर रहे होंगे। इस सवाल को मैंने कई चांदों से पहले पूछा (सी के बारे में, स्वीकार्य रूप से): http://stackoverflow.com/questions/6290956/one-dimensional-access-to-a-multidimensional-array-well-defined-c। –
संभावित डुप्लिकेट [क्या एसडीडी :: सरणी में स्मृति शामिल है?] (Http://stackoverflow.com/questions/6632915/is-the-memory-in-stdarray-contiguous) रिकर्सन –
@ लाइटनेसरेसेसिन ऑर्बिट: नहीं, मैं ऐसा नहीं लगता कि यह एक डुप्लिकेट है। जबकि एक 'std :: array' में डेटा संगत है, यह इस बात का तात्पर्य नहीं है कि नेस्टेड 'std :: सरणी में डेटा का पूरा सेट संगत है। या कम से कम यह मेरे जैसे गैर-भाषा वकील के लिए स्पष्ट नहीं है। –