【问题标题】:Printing 2d array, C++打印二维数组,C++
【发布时间】:2015-05-21 03:59:37
【问题描述】:

我来自 Matlab,我可以在其中右键单击 2D 矩阵以查看其内部内容的类似 excel 的可视化。现在我在 C++ (Visual Studio) 中工作,正在寻找类似的二维数组,例如:

myArray = [ 1 2 3
            4 5 6
            7 8 9 ]

在 C++ 中执行此类操作的最佳方法是什么?

【问题讨论】:

    标签: c++ multidimensional-array


    【解决方案1】:

    首先,这不是 C++ 中数组声明/初始化的正确语法。我不知道是否有任何 IDE 可以为您可视化一个数组,但是您可以在代码中使用两个这样的 for 循环来完成它。这也显示了数组的正确语法。

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
      int myArray[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
      };
    
      for (int i=0; i<3; ++i) {
        for (int j=0; j<3; ++j)
          cout << myArray[i][j] << ' ';
        cout << endl;
      }
    
      return 0;
    }
    

    或者,如果你想方便调试,你可以像这样定义一个预处理器指令

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    #define test_array(name,ni,nj,w)      \
      cout << #name " = {\n";             \
      for (int i=0; i<ni; ++i) {          \
        cout << "  ";                     \
        for (int j=0; j<nj; ++j)          \
          cout << setw(w+1) << myArray[i][j]; \
        cout << endl;                     \
      }                                   \
      cout << '}' << endl;
    
    int main(int argc, char **argv)
    {
      int myArray[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
      };
    
      test_array(myArray,3,3,2)
    
      return 0;
    }
    

    第四个参数允许你设置列宽,这样你就可以有很好的对齐方式。

    【讨论】:

    • 很好的答案,谢谢。我发现数组中的列数超过了输出窗口无法正常显示的列数,因此我改为写入 txt 文件。
    【解决方案2】:

    如果您指的是控制台的输出,那么您可以简单地编写一个接收数组及其大小的函数,并使用cout 将该信息打印到控制台。

    但是,如果您将其用于调试,则还有另一个数据可视化选项:当变量遇到您在程序中设置的断点时,将鼠标悬停在变量上。对此有一些警告:如果我没记错的话,如果您已动态分配数组,Visual Studio 将不会自动显示鼠标悬停可视化中的整个元素范围,因为 IDE 不知道数组的大小正确显示它。如果您使用静态大小的数组或任何 STL 容器类,则此问题将得到解决,通常建议使用其中之一--vector--代替动态分配的数组,因为它们可以自我管理其内存和提供几个有用的函数来操作它们包含的数据集。

    随着您对 C++ 的深入了解,您最终可能会创建自己的类来保存矩阵,或者下载一个实现了该类的库。如果您想在这种最终情况下以您喜欢的方式查看包含的信息,您还可以使用 Visual Studio 自定义数据可视化的方法之一。我喜欢Natvis,因为它简单易学,很快就能得到结果。

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 2021-05-25
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多