>백엔드 개발 >C++ >C에서 정적으로 선언된 2차원 배열을 클래스 데이터 멤버로 구현하려면 어떻게 해야 합니까?

C에서 정적으로 선언된 2차원 배열을 클래스 데이터 멤버로 구현하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-26 21:44:09121검색

How Can I Implement Statically Declared 2-D Arrays as Class Data Members in C  ?

C에서 클래스 데이터 멤버로 정적으로 선언된 2차원 배열

C에서는 정적으로 선언된 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]; }
};

이 예에서 클래스에는 벡터 v와 열 수를 나타내는 정수 nc가 포함되어 있습니다. 생성자는 벡터를 적절한 크기로 초기화하고 열 수를 저장하는 데 사용됩니다.

[] 연산자를 재정의하여 배열 요소에 효율적으로 액세스할 수 있는 인터페이스를 제공합니다. array2d[r][c]에 액세스하면 내부적으로 r(행)과 c(열)를 기반으로 벡터의 인덱스를 계산합니다. 이렇게 하면 배열에 대해 별도의 메모리 할당이 필요하지 않습니다.

사용 예:

Array2D array2d(2, 3);
array2d[0][0] = 1;
array2d[1][2] = 6;

이 방법을 사용하면 2D 배열처럼 동작하는 C 클래스를 생성할 수 있습니다. 연속 메모리 할당의 이점, 캐시 누락 감소, 성능 향상.

위 내용은 C에서 정적으로 선언된 2차원 배열을 클래스 데이터 멤버로 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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