c语言文件嵌套怎么用,如何在C中使用嵌套向量?

我正在尝试使用我正在编写的数独拼图解算器的向量向量.

问题1:

如果我要通过索引访问我的2d向量,我是否必须先用适当的大小初始化它?

例如:

typedef vector > array2d_t;

void readAPuzzle(array2d_t grid)

{

for(int i = 0; i < 9; i++)

for(int j = 0; j < 9; j++)

cin >> grid[i][j];

return;

}

int main()

{

array2d_t grid;

readAPuzzle(grid);

}

将seg故障.我认为这是因为它试图访问尚未初始化的网格元素?

我换了网格的声明行:

array2d_t grid(9, vector(9, 0));

这似乎摆脱了这个段错误.这是处理它的正确方法吗?

问题2:

为什么当我尝试从cin读入我的网格,然后打印出网格时,网格是空白的?

我正在使用以下代码执行此操作:

void printGrid(array2d_t grid)

{

for (int i = 0; i < 9; i++)

{

for (int j = 0; j < 9; j++)

{

cout << grid[i][j] + " ";

}

cout << endl;

}

}

void readAPuzzle(array2d_t grid)

{

for(int i = 0; i < 9; i++)

for(int j = 0; j < 9; j++)

cin >> grid[i][j];

return;

}

int main()

{

array2d_t grid(9, vector(9, 0));

printGrid(grid);

readAPuzzle(grid);

printGrid(grid);

}

我尝试运行我的程序,如:

./a.out < sudoku-test

其中sudoku-test是包含以下内容的文件:

3 0 0 0 0 0 0 0 0

5 8 4 0 0 2 0 3 0

0 6 0 8 3 0 0 7 5

0 4 1 0 0 6 0 0 0

7 9 0 0 2 0 0 5 1

0 0 0 9 0 0 6 8 0

9 3 0 0 1 5 0 4 0

0 2 0 4 0 0 5 1 8

0 0 0 0 0 0 0 0 6

第一次调用printGrid()会给出一个空白网格,相反,我应该看到一个0x的9×9网格,因为这是我初始化它的方式.第二个调用应该包含上面的网格.但是,两次都是空白.

任何人都可以对此有所了解吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值