#include <array>
using std::array;
constexpr auto d1=2;
constexpr auto d2=3;
constexpr auto d3=4;
// stacked std::array
using arr_t = array<int,d1>;
using arr2d_t = array<arr_t,d2>;
using arr3d_t = array<arr2d_t,d3>;
constexpr arr3d_t arr1 = {{
{{ {1,2}, {3,4}, {5,6} }},
{{ {1,2}, {3,4}, {5,6} }},
{{ {1,2}, {3,4}, {5,6} }},
{{ {1,2}, {3,4}, {5,6} }}
}};
// built-in array
using carr3d_t = int[d3][d2][d1];
constexpr carr3d_t arr2 = {
{ {1,2}, {3,4}, {5,6} },
{ {1,2}, {3,4}, {5,6} },
{ {1,2}, {3,4}, {5,6} },
{ {1,2}, {3,4}, {5,6} }
};
हालांकि, एक इस तरह के एक ब्रेसिज़ के केवल जोड़ी के साथ सभी ब्रेसिज़ व्यापार प्राप्त कर सकते हैं:स्टैक्ड std :: array का उपयोग करके बहु-आयामी सरणी की घोषणा में "डबल ब्रेसिज़" की आवश्यकता क्यों है?
// getaway with one-dimensional declaration
constexpr arr3d_t arr3 = {
1,2, 3,4, 5,6,
1,2, 3,4, 5,6,
1,2, 3,4, 5,6,
1,2, 3,4, 5,6
};
constexpr carr3d_t arr4 = {
1,2, 3,4, 5,6,
1,2, 3,4, 5,6,
1,2, 3,4, 5,6,
1,2, 3,4, 5,6
};
मैं चाहूँगा जब खड़ी एसटीडी का उपयोग कर पता करने के लिए क्यों {{
न्यूनतम आयाम पर छोड़कर आवश्यक हैं :: सरणी?
मैं क्लैंग और जीसीसी दोनों की कोशिश करता हूं, यह संकलित नहीं करता है। इसका मतलब है कि वे सभी std :: सरणी केस के लिए अभी तक C++ 14 ब्रेस elision का चयन नहीं करते हैं? [Godbolt.org/g/YWAbHo](https://gcc.godbolt.org/g/YWAbHo) – sandthorn