>백엔드 개발 >C++ >사용자 입력을 기반으로 C에서 동적 2차원 배열을 효율적으로 만들 수 있습니까?

사용자 입력을 기반으로 C에서 동적 2차원 배열을 효율적으로 만들 수 있습니까?

DDD
DDD원래의
2024-12-07 21:28:15539검색

How Can I Efficiently Create a Dynamic Two-Dimensional Array in C   Based on User Input?

사용자 입력을 기반으로 동적 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.