Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

In kích thước mảng đa chiều trong C++

Sử dụng template và tham chiếu mảng (array reference) để suy diễn kích thước các chiều tại compile-time.

Kỹ thuật

  • Template cho mảng 1 chiều: template<typename T, size_t N> void f(T (&)[N]).
  • Template đệ quy cho mảng đa chiều: tách chiều đầu và gọi lại cho chiều còn lại.

Ví dụ mã

#include <iostream>
using namespace std;

// Cơ sở: mảng 1 chiều
template <typename T, size_t N>
void printDimensions(const T (&)[N]) {
    cout << N;
}

// Đệ quy: mảng 2 chiều trở lên
template <typename T, size_t N, size_t M>
void printDimensions(const T (&a)[N][M]) {
    cout << "Kích thước mảng: " << N << " x ";
    printDimensions(a[0]); // gọi phiên bản 1 chiều cho hàng đầu tiên
}

int main() {
    int a[6][7];
    printDimensions(a);
    return 0;
}

Kết quả

Kích thước mảng: 6 x 7

Kỹ thuật này chỉ hoạt động với mảng tĩnh (kích thước biết tại compile-time), không áp dụng cho con trỏ hoặc mảng động.