C에서 클래스 데이터 멤버로 정적으로 선언된 2차원 배열
C에서는 정적으로 선언된 2를 통합하는 클래스를 생성할 수 있습니다. -차원 배열을 데이터 멤버로 사용합니다. 이 접근 방식은 런타임 중에 배열의 메모리가 동적으로 예약되는 동적 할당과 다릅니다.
이를 달성하기 위해 적절한 인덱싱 메커니즘과 함께 클래스 내부에서 벡터 컨테이너를 활용할 수 있습니다. 예는 다음과 같습니다.
class Array2D { public: vector<int> v; int nc; Array2D(int NR, int NC) : v(NR * NC), nc(NC) {} int* operator[](int r) { return &v[r * nc]; } };
이 예에서 클래스에는 벡터 v와 열 수를 나타내는 정수 nc가 포함되어 있습니다. 생성자는 벡터를 적절한 크기로 초기화하고 열 수를 저장하는 데 사용됩니다.
[] 연산자를 재정의하여 배열 요소에 효율적으로 액세스할 수 있는 인터페이스를 제공합니다. array2d[r][c]에 액세스하면 내부적으로 r(행)과 c(열)를 기반으로 벡터의 인덱스를 계산합니다. 이렇게 하면 배열에 대해 별도의 메모리 할당이 필요하지 않습니다.
사용 예:
Array2D array2d(2, 3); array2d[0][0] = 1; array2d[1][2] = 6;
이 방법을 사용하면 2D 배열처럼 동작하는 C 클래스를 생성할 수 있습니다. 연속 메모리 할당의 이점, 캐시 누락 감소, 성능 향상.
위 내용은 C에서 정적으로 선언된 2차원 배열을 클래스 데이터 멤버로 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!