동적 메모리 할당을 피하고 연속 메모리 할당을 보장하려면 대안을 사용할 수 있습니다. 2차원 배열을 클래스 멤버로 선언하는 접근 방식입니다.
기존 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]; } };
여기서 Array2D 클래스에는 벡터 v가 포함되어 있습니다. 및 열 수를 나타내는 정수 변수 nc입니다. 생성자를 사용하면 2차원 배열(NR, NC)의 크기를 초기화할 수 있습니다.
배열의 요소에 액세스하려면 연산자[]가 오버로드됩니다. array2d[0][0]을 호출하면 첫 번째 행의 첫 번째 요소에 대한 포인터가 반환됩니다.
메인 함수에서:
Array2D array2d(2, 3); array2d[0][0] = 1; array2d[1][2] = 6;
이 코드는 값 1을 할당합니다. array2d의 첫 번째 요소와 6의 마지막 요소입니다.
이 구현은 정적으로 선언된 2D 배열을 데이터 멤버로 제공합니다. 클래스를 사용하여 연속적인 메모리 저장을 보장합니다. 메모리 할당에 대한 더 강력한 제어 기능을 제공하고 잠재적인 캐시 누락을 방지하므로 성능에 민감한 애플리케이션에 효율적인 선택이 됩니다.
위 내용은 클래스 멤버로서 정적으로 선언된 2차원 배열에 대한 연속 메모리 할당을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!