C++ 调整向量大小时出现运行时错误
当我运行此程序时:C++ 调整向量大小时出现运行时错误,c++,linux,vector,console-application,C++,Linux,Vector,Console Application,当我运行此程序时: #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) scree
#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();
}
在linux中。节目有什么问题吗
如果
列
和行
的数字较低,则没有问题。您正在将屏幕
调整为行
元素,但随后访问其中的元素行
col
也是如此
它适用于较小的数字这一事实是一个(不幸的)不幸。您正在将
屏幕
调整为行
元素,但随后访问其中的元素行
col
也是如此
它适用于较小的数字这一事实是(不幸的)不幸。if(screen[row-1].size()<(unsigned)col)
屏幕[第1行]。调整大小(列);
您只需在此处调整屏幕[99]
的大小<代码>屏幕[9]仍然具有大小0
,这就是为什么您无法访问屏幕[9][9]
(但是,您可以访问屏幕[99][9]
)。如果(屏幕[row-1].size()<(未签名)列)
屏幕[第1行]。调整大小(列);
您只需在此处调整
屏幕[99]
的大小<代码>屏幕[9]仍然有大小0
,这就是为什么您无法访问屏幕[9][9]
(但是,您可以访问屏幕[99][9]
)。零索引。一个100x100的向量每个有100个元素,从0到99.0。一个100x100的向量每个有100个元素,从0到99。我在发布之前更改了索引。现在问题已经解决了,问题还没有解决。我在发布之前更改了索引。现在问题已经解决了,问题还没有解决。谢谢这是一个大型程序的简短摘录,我应该再检查一遍。是的。谢谢这是一个大型程序的简短摘录,我应该再检查一遍。
Segmentation Fault (core dumped)
if(screen[row - 1].size() < (unsigned)col)
screen[row - 1].resize(col);