此方法会涉及内存重新分配,从而影响效率吗?

问题描述 投票:2回答:1

我发现我们可以将文件的内容读取到std :: vector中,如下所示:

  ifstream fin(..., ios::in);
    std::vector<char> buf(
            std::istreambuf_iterator<char>(fin), 
            std::istreambuf_iterator<char>());   

[我很困惑:这种方法是否会像我多次调用buf.push_back();那样导致大量的内存重新分配?请问将文件读入std :: vector的最快或最佳方法是什么?

c++ file vector ifstream
1个回答
0
投票

std::istreambuf_iterator是输入迭代器,因此开始和结束之间的距离是未知的。除非文件很小,否则在构造函数期间将进行一些重新分配。对于随机访问迭代器,距离是已知的,在这种情况下,构造函数可以避免额外的内存分配。

© www.soinside.com 2019 - 2024. All rights reserved.