我正在尝试将文件中的整数值存储到向量中。 文件的每一行都包含三个值,因此我试图创建一个向量矢量,每个向量包含三个值。
vector< vector<int> > links;
ifstream infile("my_file");
int a, b, c;
int i = 0;
while (infile >> a >> b >> c)
{
links[i].push_back(a);
links[i].push_back(b);
links[i].push_back(c);
i++;
}
实际上在编译后出现此错误:线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x8)
答案 0 :(得分:3)
循环的每次迭代都需要做两件事:
links
您的示例尝试执行2),而不执行1)。如果您知道文件的大小(行数),并在进入循环之前将links
调整为正确的大小,则可以避免1)。
否则,您必须按照以下步骤完成两项任务
while (...)
{
#if 0
// create new inner vector (C++17 version)
auto& inner = links.emplace_back();
#else
// create new inner vector (C++11 version)
links.emplace_back();
auto& inner = links.back();
#endif
// insert elements
inner.push_back(a);
inner.push_back(b);
inner.push_back(c);
}