사용자 입력을 기반으로 동적 2차원 배열 생성
일부 프로그래밍 시나리오에서는 2차원 배열을 생성해야 할 수도 있습니다. 사용자 입력에 따라 크기가 결정되는 배열입니다. 기존 배열은 선언 시 고정된 차원을 요구하지만 C는 이 문제를 해결할 수 있는 솔루션을 제공합니다.
옵션 1: 벡터 벡터 사용
다음으로 표시되는 벡터의 벡터 벡터>는 2차원 배열을 동적으로 생성하는 데 활용될 수 있습니다. 그러나 이 방법은 반복적인 포인터 역참조로 인해 비효율적일 수 있으며 이로 인해 성능이 저하됩니다.
옵션 2: 오버로드 연산자와 함께 사용자 정의 매트릭스 클래스 사용
더 효율적인 방법 접근 방식에는 메모리 할당을 처리하고 요소에 액세스하기 위한 오버로드된 연산자를 제공하는 사용자 정의 행렬 클래스를 만드는 것이 포함됩니다. 이 접근 방식은 효율적인 메모리 관리와 더 빠른 액세스 시간을 보장합니다.
template <class T> class matrix { int columns_; std::vector<T> data; public: matrix(int columns, int rows) : columns_(columns), data(columns * rows) {} T &operator()(int column, int row) { return data[row * columns_ + column]; } };
이 구현에서 행렬 클래스는 데이터 저장을 위한 열 크기와 단일 기본 벡터를 유지합니다. 오버로드된 연산자()를 사용하면 요소에 액세스하기 위한 편리한 첨자와 같은 구문을 사용할 수 있습니다.
사용 예:
matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix myMatrix(0, 0) = 10; // Set the (0, 0) element to 10 std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10
결론
이 기사에서는 동적 2차원 배열을 생성하는 두 가지 옵션을 탐색하여 벡터의 전통적인 벡터 접근법. 오버로드된 연산자가 포함된 사용자 정의 매트릭스 클래스는 효율적인 메모리 관리와 향상된 액세스 속도를 제공하므로 성능이 중요한 시나리오에 적합한 선택입니다.
위 내용은 사용자 입력을 기반으로 C에서 동적 2차원 배열을 효율적으로 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!