2차원 배열의 [] 연산자 오버로드
2차원 배열은 행과 열로 구성된 요소의 모음입니다. C에서 2차원 배열은 일반적으로 포인터 배열에 대한 포인터로 저장되며, 각 포인터는 행의 요소 배열을 가리킵니다.
[] 연산자 오버로드
C에서는 [] 연산자를 오버로드하여 배열 요소에 액세스할 수 있습니다. 기본적으로 [] 연산자는 단일 정수 인덱스를 사용하고 배열의 해당 요소에 대한 참조를 반환합니다.
2차원에 대한 오버로딩
액세스를 허용하려면 두 개의 인덱스를 사용하는 2차원 배열 요소의 경우 [] 연산자를 두 번 오버로드할 수 있습니다. 이는 배열의 행을 나타내는 중첩 클래스를 생성한 다음 상위 클래스와 중첩 클래스 모두에 대해 [] 연산자를 오버로드하여 수행할 수 있습니다.
예제 코드
다음은 오버로드된 [] 연산자를 사용하는 2차원 배열 클래스의 구현 예입니다.
class ArrayOfArrays { public: ArrayOfArrays() { _arrayofarrays = new int*[10]; for(int i = 0; i < 10; ++i) _arrayofarrays[i] = new int[10]; } class Proxy { public: Proxy(int* _array) : _array(_array) { } int operator[](int index) { return _array[index]; } private: int* _array; }; Proxy operator[](int index) { return Proxy(_arrayofarrays[index]); } private: int** _arrayofarrays; };
여기 예를 들어 ArrayOfArrays 클래스는 전체 2차원 배열을 나타내고 Proxy 클래스는 배열의 행을 나타냅니다. [] 연산자는 ArrayOfArrays 및 Proxy 클래스 모두에 오버로드되어 각각 하나 또는 두 개의 인덱스를 사용하여 요소에 액세스할 수 있습니다.
사용
ArrayOfArrays를 사용하려면 클래스에서는 []를 사용하여 인스턴스를 만들고 요소에 액세스할 수 있습니다. 연산자:
ArrayOfArrays aoa; aoa[3][5]; // Accesses the element at row 3, column 5
이런 방식으로 [] 연산자를 오버로드하면 1차원 배열의 요소에 액세스하는 것과 유사한 구문을 사용하여 2차원 배열의 요소에 액세스할 수 있습니다.
위 내용은 C에서 2차원 배열의 요소에 액세스하기 위해 [] 연산자를 오버로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!