从CIN声明动态2D数组

时间:2012-09-13 11:14:08

标签: c++ arrays

我希望更改我在这里找到的游戏TOH here

的代码

我想让它询问多少磁盘...然后输入3.然后我会在代码中的数组中将[8]改为[3]。还是有更好的方法吗?

我正在研究并发现this,但它在二维数组中不起作用。

如何在此处使用向量..将行[8]更改为用户输入的..

struct World{

   int t[3][8];
   int cursor;
   int chosen;

};

我的int main是要求“多少行......”的那个?

1 个答案:

答案 0 :(得分:1)

请改用std::vector<std::vector<int>>。这会自动处理动态分配。

例如:

#include <iostream>
#include <vector>

int main()
{
    //
    // *** Validation of input omitted: you must do this. ***
    //
    size_t rows;
    std::cout << "Enter number of rows: ";
    std::cin >> rows;

    std::cout << "Enter number of columns: ";
    size_t columns;
    std::cin >> columns;

    std::vector<std::vector<int> > ints(rows, std::vector<int>(columns));

    for (size_t ri = 0; ri < rows; ri++)
    {
        for (size_t ci = 0; ci < columns; ci++)
        {
            std::cout << "Enter value for [" << ri << ", " << ci << "]: ";
            std::cin >> ints[ri][ci];
        }
    }

    for (size_t ri = 0; ri < ints.size(); ri++)
    {
        for (size_t ci = 0, size = ints[ri].size(); ci < size; ci++)
        {
            std::cout << "["
                      << ri
                      << ", "
                      << ci
                      << "]="
                      << ints[ri][ci]
                      << "\n";
        }
    }

    return 0;
}