동적 인 2 차원 정수 배열을 필드로 사용하여 클래스를 작성합니다. 가장 중요한 부분은 짧은 액세스 시간입니다. 나는 크기와 그것의 내용이 아직 CPP 파일에 구현 생성자에서 정의 할 수있다 그러나 (propably INI 파일에서 읽기),헤더에 크기가없는 동적 배열 선언 .cpp로 정의.
//Grid.h
class Grid{
int ** array;
}
헤더 파일에 선언하고자합니다.
는 잘 모르겠어요 헤더에 int **array
포인터를 선언하고 액세스 할 수 및 기타 기능에는 문제가 발생할 것 배열을 만드는됩니다
array = new int*[x];
for(i=0;i<x;i++){
array[i] = new int [y];
}
의 사용과 그것을 나중에 동적 배열을 할당하는 경우 array[i][j]
의 정의를 (또는 다른 덜 명백한 오류) 필드로 직접 호출하지만, 언급 된 함수가 호출을 시작하기 전에 이미 정의되고 정의되어야합니다.
제 질문 -이 방법은 유효하고 효율적인 방법입니다. 나는 다른 아이디어를 받아 들일 것이다.
예, "벡터"클래스에 대해 들어 봤지만 효율이나 읽기 - 쓰기 및 정수 배열 성능에 대해 잘 모르겠습니다. 벡터의 크기는 유연하지만 필요하지는 않습니다. 배열은 한 번 설정하면 크기가 고정됩니다.
나는 자바 스타일의 코드 int[][] array
에 익숙하다.
+1 객체가 접근과 저장을 책임지게하기 위해서 ... 배열을 비공개로 만들고 Get/Set 접근 메쏘드를 만든다. ods. 그렇게하면 저장소 구현을 변경하고 나머지 코드는 변경하지 않을 수 있습니다. 접근 방법의 효율성에 대해 걱정하지 마라. 컴파일러/링커에 의해 코드에 인라인 될 것이고, 범위 검사가 너무 비싸면 다른 코드를 변경하지 않고도 그것을 제거 할 수있다. ... – mark
3의 규칙을 잊지 마세요! – aschepler
위대한 설명, 고마워. Anbyody는 1 차원 배열과 2 차원 배열 사이의 성능/액세스 시간의 차이를 설명합니다. – Ponyman