我正在使用std::vector<char>
填充数据(~100到1000MiB)std::ifstream::read()
。我事先知道这个读取的大小,所以我可以构造那个大小的矢量。
然后,我继续读取文件,直到找到特定的分隔符。直到该分隔符的任何数据都将添加到向量中。最糟糕的情况是500KiB,通常很多。
考虑到矢量的大小,我想知道这是否会导致昂贵的增长(和重新分配)。内存是一个问题,因为向量的大小应该与其构造的大小非常接近。
使用std :: vector :: reserve将矢量容量略微超出其初始大小是否是一个很好的解决方案,以便少量的额外数据不需要它增长?如果是这样,最好将向量构造为空,保留容量,然后将其调整为初始大小,对吗?