我有一个包含表格格式值的文件。文件中的行数和列数可能会有所不同。
33829731.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00
205282038.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00
3021548.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00
203294496.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00
205420417.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00
我正在使用二维向量来使用以下代码存储数据。
ifstream inputCent("file.txt");
std::vector<std::vector<double> > C;
std::vector<double> col(15);
while(!inputCent.eof())
{
for(int i = 0; i < col.size(); i++)
{
inputCent >> col[i];
C[i].push_back(col[i]);
}
}
但是这给了我Segmentation fault: 11
。但是,如果我像这样初始化std::vector<std::vector<double> > C(15);
那么它适用于15行。但正如我所说,行数可能会有所不同。为什么我必须初始化C
的大小?或者我做错了什么?
答案 0 :(得分:2)
您正在尝试push_back
到可能不存在的向量...正确的代码如下:
ifstream inputCent("file.txt");
std::vector<std::vector<double> > C;
std::vector<double> col(15);
while(!inputCent.eof())
{
for(int i = 0; i < col.size(); i++)
{
inputCent >> col[i];
}
C.push_back(col);
}
如上所示,在将整个 col
向量推送到col
的后面之前,使用值填充C
向量更有意义。< / p>