int의 1 차원 벡터를 만들었습니다. 어떻게 2 차원 벡터처럼 취급 할 수 있습니까?
내가 쓸 수있는 동안 나는 쓸 arr[1];
수 없다arr[1][2];
이것이 필요한 이유 : 벡터 [3x5] 벡터를 정의하는 대신 길이가 15 인 벡터를 정의 했으므로 행렬에서 장소의 좌표를 취하는 함수가있을 때마다이를 하나로 변환하는 다른 함수를 호출해야합니다. 정말 짜증나는 차원 값입니다.
크기의 1D 배열을 열이 N
있는 2D 배열로 취급한다고 가정하면 2D M
인덱스가 지정된 1D 인덱스를 계산하는 도우미 함수를 작성할 수 있습니다.
auto in = [M] (int i, int j) { return i * M + j; };
다음과 같이 사용하십시오.
arr[in(i,j)];
이것은 arr[i * M + j]
오류가 발생하기 쉬운 모든 곳에서 말하는 것보다 적어도 바람직합니다 .
이상적으로는이 1D 배열을 2D 인덱싱을 지원하는 클래스로 래핑하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다