2013-07-20 4 views
31

C++에서 다차원 std::array은 어떻게 만듭니 까? 나는 이것을 시도했다 :다차원 std :: array

std::array<std::array<int, 3>, 3> arr = {{5, 8, 2}, {8, 3, 1}, {5, 3, 9}}; 

그러나 그것은 작동하지 않는다. 내가 뭘 잘못하고 어떻게 해결할 수 있니?

+0

가능한 중복 [왜 수 2 차원 표준 : 배열 (중괄호)? 간단하지 초기화] (http://stackoverflow.com/ 질문/12844475/why-cant-simple-initial-with-braces-2d-stdarray) – juanchopanza

+0

이것은 혼란을 야기하는 문제입니다. 사본에 대한 답에 대한 주석을보십시오. 나는 당신의 코드가 C++ 11에서 실제로 불법임을 확신하지는 않는다. 그러나 명확하지는 않다. – juanchopanza

+0

사실 내가 컴파일해야한다고 생각하니? 여분의 괄호는 생략 할 수 있습니다. – Rapptz

답변

48

당신은에 c++14 proposal 차기까지, 별도의 브라켓이 필요합니다.

std::array<std::array<int, 3>, 3> arr = {{{5, 8, 2}, {8, 3, 1}, {5, 3, 9}}}; 
+11

누구나 말할 수 있습니까?이 3 가지 수준의 중괄호는 모두 무엇을 의미합니까? 그리고 왜 이렇게 작동합니까? '... = {{{5, 8, 2}}, {{...}}, ...}}'(중괄호 4 단계)? – user1234567

+1

@ user3241228 내 추측 : 내부 = 배열, 다음 = 배열 ​​배열, 마지막 = 균일 한 초기화. 귀하의 예제에서, 당신은 중간 배열이 단지 하나의 요소를 가지며 (그리고 그 요소는 3-int 배열입니다) 3 차원 배열을가집니다. – hoosierEE

관련 문제