如何在c ++中的列中放置一个4x4 2d数组?

时间:2016-05-27 15:27:04

标签: c++ multidimensional-array

如何在c ++中将4x4 2d数组放在一列?





所需输出:




  1995 1996 1997 1998
 John 74 45 13 57
 Mark 16 12 48 75
 Wilhelm 90 64 12 45
 Mikhail 35 12 90 95
  




请记住




  74 45 13 57
 16 12 48 75
 90 64 12 45
 35 12 90 95
  




是一个4x4矩阵。





问题在于我不能将名称列设置在打印矩阵旁边,也不能像使用矩阵编号那样声明名称。





当前代码:

& #xA;

  int matrix [4] [4] = {{74,45,13,​​57},
 {16,12,48,75},
 {90,64,12,45},
 {35,12,90,95}};

 int main()
 {
而(真)
 {
 for(int x = 0; x< 4; x ++)
 {
 for(int y = 0; y< 4; y ++)
 {
 cout<< “\ t” 的;
 cout<<矩阵[X] [Y];
 }
 cout<< ENDL;
 }
 cin.get();
 }
返回0;
}
  



3 个答案:

答案 0 :(得分:4)

在这个问题中答案是肯定的。为列标题和行标题创建一个SEPERATE数组。

另一种选择是完全创建不同的数据结构。

即。

std::string col_headers[4] = { "1995", "1996", "1997", "1998" };
std::string row_headers[4] = { "John" , "Mark", "Wilhelm", "Mikhail" };

现在只需在原始代码中引用它

int main()
{
    while (true)
    {   

        for ( int c = 0; c < 4; c++ )
        {
            cout << "\t" << col_headers[c];
        }
        cout << "\n";

        for ( int x = 0; x < 4; x++)
        {
            cout << row_headers[x];
            for ( int y = 0; y < 4; y++)
            {
                cout << "\t";
                cout << matrix[x][y];
            }
            cout << endl;
        }
        cin.get();
    }
    return 0;
}

答案 1 :(得分:3)

您可以使用std :: map来帮助您管理:

std::map<std::string, std::vector<int>> table =
{
  {"",        {1995, 1996, 1997, 1998}},
  {"John",    {74,   45,   13,   57  }},
  {"Mark",    {16,   12,   48,   75  }},
  {"Wilhelm", {90,   64,   12,   45  }},
  {"Mikhail", {35,   12,   90,   95  }}
};

然后,在您的代码中:

for(auto iter : table)
{
  std::cout << iter.first;
  for(int number : iter.second)
  {
    std::cout << '\t' << number;
  }
  std::cout << std::endl;
}

注意:您可能需要进行一些其他格式设置,以确保名称后面的空格允许数字的开头全部排列。

答案 2 :(得分:0)

使用向量内的向量将起作用。也称为多维向量允许您创建2d向量。

.js

这将做的是它会在主矢量的第一个位置插入一个矢量数据。

所以,v [0] = v1内的数据

如果你想访问2d数组的确切位置,那么v [0] [1]将返回45,依此类推