【问题标题】:A function for multidimensional arrays多维数组的函数
【发布时间】:2015-02-07 14:06:40
【问题描述】:

我想要一个函数,以便我可以打印多维数组的元素。该功能可能无效或无效。我尝试创建这样的功能,但我无法获得结果。

代码:

void multi_deimensional_array_printing(int *(ref)[5], int size){

for (int *(ia)[5]{ref}; ia != ref + 5; ++ia) {// prob
    for (int rowsize{0}; rowsize != size; ++rowsize) {
        std::cout << rowsize << " ";
    }
}

}

【问题讨论】:

  • 你有你尝试的示例代码吗?
  • 链接转储减 1。
  • 减号投票被撤回。

标签: c++ multidimensional-array


【解决方案1】:
std::cout << rowsize << " ";

您想显示数组中的内容,而不是您在数组中的位置。 所以,如果你现在不知道有多少 i ,你可以这样做: void multi_deimensional_array_printing(int **ref, int size){

  for (size_t i = 0; ref[i] != NULL ; ++i) {
    for (size_t a = 0; a < size; ++a) {
      std::cout << ref[i][a] << " ";
    }
    std::cout << std::endl;
  }
}

在你的情况下:

void multi_deimensional_array_printing(int *(ref)[5], int size){

  for (size_t i = 0; i < 5 ; ++i) {
    for (size_t a = 0; a < size; ++a) {
      std::cout << ref[i][a] << " ";
    }
    std::cout << std::endl;
  }
}

【讨论】:

    【解决方案2】:

    您可以通过引用接收数组并使用模板参数推导来推导范围:

    Live On Coliru

    #include <iostream>
    
    template <typename T, size_t N, size_t M>
    void print(T (&arr)[N][M]) {
        for (size_t i = 0ul; i<N; ++i) {
            for (size_t j = 0ul; j<M; ++j)
                std::cout << arr[i][j] << " ";
            std::cout << "\n";
        }
    }
    
    int main() {
        int a[][3] = {
            { 1,2,3 },
            { 4,5,6 },
        };
    
        print(a);
    }
    

    打印

    1 2 3 
    4 5 6 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2013-01-15
      相关资源
      最近更新 更多