2차원 배열에 대한 [] 연산자 오버로드
[]와 같은 연산자는 특정 배열에 대한 사용자 정의 동작을 제공하기 위해 오버로드될 수 있습니다. 데이터 유형. 2차원 배열의 경우 [] 연산자를 두 번 오버로드할 수 있어 편리하고 직관적인 구문이 가능합니다.
여러 인덱스에 대한 오버로딩
2차원 배열의 [] 연산자를 오버로드하려면 배열 자체를 나타내는 클래스를 정의하면 됩니다. 이 클래스 내에서 [] 연산자를 각 인덱스에 하나씩 두 번 정의할 수 있습니다.
class TwoDimensionalArray { public: int operator[](int index1) { // Return a one-dimensional array } int operator[](int index1, int index2) { // Access the element at the given indices } };
중첩 배열용 프록시 클래스
또는 첫 번째 오버로드에서 반환된 1차원 배열을 나타내는 프록시 클래스입니다. 이를 통해 여러 인덱스를 사용하여 요소에 액세스하는 편리한 구문이 가능해졌습니다.
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; };
사용
이 구현을 사용하면 오버로드된 [] 연산자를 사용하여 요소에 액세스할 수 있습니다. 다음과 같이 2차원 배열에서:
ArrayOfArrays aoa; aoa[3][5];
이 구문은 일반 배열의 요소에 액세스하는 것과 유사합니다. 2차원 배열을 사용하여 이해하기 쉽습니다.
위 내용은 C에서 2차원 배열 액세스를 위해 [] 연산자를 오버로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!