1

我正在寻找一种在std::vector使用std::ifstream.

我尝试了以下方法:

std::vector<int> indices;
indices.reserve(index_count);
std::copy(std::istream_iterator<int>(ifstream), std::istream_iterator<int>(), std::back_inserter(indices));

但没有添加任何条目。我读过这个方法可能只适用于字符串?

无论如何,任何建议将不胜感激。:)

4

1 回答 1

2

您必须编写自己的迭代器来执行此操作。这样做没有用 - 它会很慢,因为每个++迭代器都会进行另一次读取(这是很多读取,或者至少比必须存在的要多得多)。

如果你有一个纯粹是整数的文件......

std::ifstream is("filename.ints", std::ios::binary|std::ios::in);
is.seekg(0, std::ios::end);
auto length = is.tellg();
is.seekg(0)

std::vector<int> ints(length/sizeof(int), 0);
is.read(reinterpret_cast<char*>(ints.data()), ints.size()*sizeof(int));
于 2013-11-08T04:12:29.343 回答