키가 int이고 값이 배열 목록 (int[][]
) 인지도를 만들고 싶습니다.목록이 포함 된 C++지도
const int R = 4, C = 5;
std::map<int, std::list<int[R][C]> > s;
하지만 컴파일되지 않으며 (R과 C 프로그램의 매개 변수는 있지만 실행 중에 변경되지 않는) 이유는 ... 이해가 안 :
나는이 시도.키가 int이고 값이 배열 목록 (int[][]
) 인지도를 만들고 싶습니다.목록이 포함 된 C++지도
const int R = 4, C = 5;
std::map<int, std::list<int[R][C]> > s;
하지만 컴파일되지 않으며 (R과 C 프로그램의 매개 변수는 있지만 실행 중에 변경되지 않는) 이유는 ... 이해가 안 :
나는이 시도.배열은 복사 가능 또는 사본 할당 가능이 아니며 표준 컨테이너의 요소 여야합니다. 코드는 그대로 컴파일되지만 배열 유형은 표준 컨테이너에 대한 요구 사항을 위반하므로 정의되지 않은 동작이 발생합니다. std::list<int[R][C]>
을 가질 수 없습니다. 그러나 C++ (11)는 당신의 즐거움을위한 멋진 새 컴파일 시간 상수 크기의 std::array
을 제공합니다
typedef std::array<std::array<int, C>, R> array_2d;
typedef std::list<array_2d> array_list;
std::map<int, array_list> s;
그렇지 않으면, 다른 대안이 std::vector
대신 std::array
(권장)를 사용하거나 int**
의 std::list
을 가지고 있으며 2D 배열을 동적으로 할당하십시오.
그러나 디자인에 대해 다시 생각해 보겠습니다. 이것은 정말로 당신이 원하는 구조입니까? 데이터 중 하나를 struct
으로 그룹화해야합니까?
그러나 OP의 코드는 GCC 4.7.2 및 Clang 3.2 –
에서 정상적으로 컴파일됩니다. 고맙습니다 만 C++ 11이 없습니다 ... 다른 해결책이 있습니까? – Jav
@ Jav : 어떤 컴파일러를 사용하고 있습니까? –
어떤 컴파일러를 사용하고 있습니까? –
"작동하지 않음"은 실제로보고있는 문제에 대한 설명이 아닙니다. 아무도 도와 줄 수 없으면 무엇이 잘못 될지 정말 알려 주어야합니다 ... – sth