当C ++存在2种不同大小时,打印函数多维数组

时间:2014-05-18 07:45:50

标签: c++ arrays

我在创建PRINT函数时遇到问题,我可以使用不同的数组大小运行多次。我将以此为例。

飞机座位表:

2 sections
-First Class
--5 rows 
--2 columns
---2 seats/column

-Coach Class
--5 rows
--2 columns
---3 seats/column

VISUAL: Example - Plane seating chart

问题1:我怎样才能打印出来?

问题2:如何创建一个函数来多次传递它?

有问题的代码(从第2个角度来看)

#include <iostream>
#include <iomanip>

using namespace std;

const int COLS = 4;
const int ROW1 = 3, ROW2 = 4;

void showArray(const int [][COLS],int);

int main()
{
int table1 [ROW1][COLS] = {{1,2,3,},{6,7,8,9}};
int table2 [ROW2][COLS] = {{9,8,7,6},{5,4,3,2}};
cout << "Table 1 Array: \n" << endl;
showArray(table1,ROW1);
cout << "Table 2 Array: \n" << endl;
showArray(table2,ROW2);

return 0;
}
void showArray (const int array[][COLS], int rows)
{
for(int x = 0; x < rows; x++)
{
    for (int y = 0; y < COLS; y++)
    {
        cout << setw(4) << array[x][y] << "  ";
    }
    cout << endl;
}
}

上面的代码是一个例子,如果需要确定行数,我需要做什么......对吗?

现在我知道代码并没有给我正确的打印输出,因为它在空白点放置0,我知道当没有&#39;时,我会知道y(或COLS)循环4次。列出的x第4个值

关于如何创建一个可以多次使用不同数组大小的函数的任何想法,而不是给我0?

在这种特殊情况下,我可以将CONST INT指定给&#34; Rows&#34;因为基本上它们是5个5的数组,但是如果我将每个座位都计为新列,它们将具有不同的Y(列)值。

除非有办法,我可以保持相同的列数(2)并在每列中显示多个席位,无论他们是头等舱还是教练舱。

任何想法都会很棒。我感谢你们的帮助!

1 个答案:

答案 0 :(得分:3)

如果这不是您要求的,请告诉我。下面是一个如何打印任意大小的多维数组的示例。对于此示例,我使用std::vector作为容器。请注意,这是C ++ 11,它不能用C ++ 98编译(如果你想用C ++ 98编译器编译这个代码,你需要使用迭代器而不是基于范围的循环)

#include <iostream>
#include <vector>

void show(const std::vector<std::vector<int>>& matrix)
{
    for(auto& vector : matrix) {
        for(auto& element : vector) {
            std::cout << element << " ";
        }

        std::cout << std::endl;
    }
}

int main()
{
    std::vector<std::vector<int>> matrix1;

    matrix1.push_back({1,2,3});
    matrix1.push_back({4,5,6});
    matrix1.push_back({7,8,9});

    std::vector<std::vector<int>> matrix2;

    matrix2.push_back({1,2,3,4,5});
    matrix2.push_back({6,7,8,9,10});

    std::cout << "Matrix1: " << std::endl;
    show(matrix1);

    std::cout << "Matrix2: " << std::endl;
    show(matrix2);
}