在下面的代码中我有2个数组,1个包含3个名字,另一个是包含21个数字的2维数组
我想知道如何打印两个彼此相邻的阵列,而不是一个在顶部,一个在下面。使用下面显示的代码,我的输出如下:
name1
name2
name3
37 37 63 38 27 56 55
37 54 78 31 26 67 44
86 11 23 6 90 87 33
我希望它显示为
name1 37 37 63 38 27 56 55
name2 37 54 78 31 26 67 44
name3 86 11 23 6 90 87 33
这是我用来显示数组的函数
void printArrays(const int array1[][NUM_DAYS], const string array2[])
{
cout << "Name \t\t\t Day 1\t Day 2\t Day 3\t Day 4 \t Day 5\t Day 6\t Day 7" << endl;
for (int i = 0; i < NUM_MONKEYS; i++)
{
cout << array2[i] << endl;
}
cout << endl;
for (int row = 0; row < NUM_MONKEYS; row++)
{
for (int col = 0; col < NUM_DAYS; col++)
{
cout << array1[row][col] << " ";
}
cout << endl;
}
答案 0 :(得分:1)
您正在开始一个新的循环来迭代数组。您只需要迭代与第一个数组相同的行索引。检查代码:
void printArrays(const int array1[][NUM_DAYS], const string array2[])
{
cout << "Name \t\t\t Day 1\t Day 2\t Day 3\t Day 4 \t Day 5\t Day 6\t Day 7" << endl;
for (int i = 0; i < NUM_MONKEYS; i++)
{
cout << array2[i] << " ";
for (int col = 0; col < NUM_DAYS; col++)
{
cout << array1[i][col] << " ";
}
cout << endl;
}
}
答案 1 :(得分:0)
为什么不直接宣布三个std::vector
并用它的名字打印出来?
void print(const vector<int>& vec, const string& name)
{
cout << name << "\t";
for (const auto& i : vec)
cout << i << " ";
cout << '\n';
}
int main()
{
vector<int> name1 { 37, 37, 63, 38, 27, 56, 55 };
vector<int> name2 { 37, 54, 78, 31, 26, 67, 44 };
vector<int> name3 { 86, 11, 23, 6, 90, 87, 33 };
print(name1, "name1");
print(name2, "name2");
print(name3, "name3");
}
输出:
name1 37 37 63 38 27 56 55
name2 37 54 78 31 26 67 44
name3 86 11 23 6 90 87 33
答案 2 :(得分:0)
使用C ++ 11基于范围的for循环可以简化您的解决方案。
#include <iostream>
#include <vector>
int main()
{
std::vector<char*> m_Str{"name1", "name2", "name3"};
std::vector<std::vector<int>> m_Array{ { 37, 37, 63, 38, 27, 56, 55 },
{ 37, 54, 78, 31, 26, 67, 44 },
{ 86, 11, 23, 6, 90, 87, 33 } };
for(const auto& str : m_Str)
{
static auto i = 0;
std::cout << str << '\t';
for(const auto& ele : m_Array[i])
{
std::cout << ele << ' ';
}
std::cout << std::endl;
i++;
}
}