【问题标题】:Input integers from fstream to 2d vector< vector<int> > C++从 fstream 输入整数到 2d 向量<vector<int> > C++
【发布时间】:2012-11-29 14:41:36
【问题描述】:

我正在尝试使用 push_back 将整数从 ifstream 动态添加到 2d 向量。基本上输入将类似于:

3
20 3
30 4
40 5 
3
50 6
60 7
70 8

我想自己读取 int (3,3 ..etc),然后创建数字对的 2d 向量(int 本身描述将有多少对)。现在我正在使用 getline() 并将数字存储在 char 中,然后再次将它们转换为 int,但我觉得这可能并不理想。如果有人有任何想法,我将不胜感激。

【问题讨论】:

  • 有点不清楚你想要什么。你所描述的听起来像是一个 3D 矢量,{{{20, 3},{30,4},{40,5}}, {{50,6},{60,7},{70,8}}}。或者你真的想要vector&lt;vector&lt;pair&lt;int, int&gt;&gt;&gt;
  • @sftrabbit vector&lt;vector&lt;pair&lt;&gt;&gt;&gt; 对我来说听起来像是三个维度,只有第三个维度被限制为正好两个单位的大小(长度?)。

标签: c++ vector ifstream


【解决方案1】:

类似的东西(未经测试):

std::istream_iterator<int> eos;
std::vector<std::vector<int>> matrix;
while(std::getline(str, line))
{
  std::istringstream istr(line);
  std::istream_iterator<int> iin(istr);
  std::vector<int> columns;
  std::back_insert_iterator<vector<int>> back_it(columns);
  std::copy(iin, eos, back_it);
  matrix.push_back(columns);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2011-10-24
    • 2020-09-07
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多