将文件中的整数值存储到向量的向量中

时间:2019-05-09 16:58:07

标签: c++

我正在尝试将文件中的整数值存储到向量中。 文件的每一行都包含三个值,因此我试图创建一个向量矢量,每个向量包含三个值。

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)

1 个答案:

答案 0 :(得分:3)

循环的每次迭代都需要做两件事:

  1. links
  2. 中创建一个新的 inner 向量
  3. 将三个元素添加到新创建的内部向量中

您的示例尝试执行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);
}