1

push_back を使用して、ifstream から 2d ベクトルに整数を動的に追加しようとしています。基本的に、入力は次のように入力されます:

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

そして、int自体(3、3 ..など)を読み取り、数値のペアの2次元ベクトルを作成したい(int自体は、ペアの数を記述します)。現在、getline() を使用して数字を char に格納してから、再び int に変換していますが、これは理想的ではないかもしれません。誰かに何かアイデアがあれば、私はそれを感謝します。

4

1 に答える 1

0

(未テスト) のようなもの:

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);
}
于 2012-11-29T14:49:16.170 に答える