0

当我运行这个程序时:

#include <iostream>
#include <vector>
using namespace std;


int main()
{
    vector<vector<char> > screen;
    char ch = 'a';
    unsigned col = 100, row = 100;
    if(screen.size() < (unsigned)row)
        screen.resize(row);
    if(screen[row - 1].size() < (unsigned)col)
        screen[row - 1].resize(col);
    screen[9][9] = ch;
    cout<< "hello";
    cout.flush();
}

cout不打印任何东西,我收到此错误:

Segmentation Fault (core dumped)

在 Linux 中。程序有什么问题吗?

如果colrow具有较低的数字,则没有问题。

4

2 回答 2

3

您正在调整screen元素row的大小,但随后您访问其中的元素rowvectorC++ 中的 s 和数组一样是从 0 开始的,所以有效的索引是0...row-1.

内部向量 和 也是如此col

它适用于较小的数字的事实是(不幸的)不幸。

于 2013-09-08T21:54:23.727 回答
3
if(screen[row - 1].size() < (unsigned)col)
    screen[row - 1].resize(col);

你只是screen[99]在这里调整大小。screen[9]仍然有 size 0,这就是为什么你不能访问screen[9][9](但是你可以访问screen[99][9])。

于 2013-09-08T22:00:28.957 回答