说我想初始化一些std::vector对象,例如
class Person { int ID; string name; ...}
从包含每个对象的行的文件.一条路线,就是覆盖operator>>而简单地说std::cin>>temp_person,另一条路线- 我曾经赞成的是使用sscanf("%...", &...)一堆临时原始类型而且简单.emplace_back(Person(temp_primitives...).
哪种方式可以实现最快的运行时忽略内存占用?mmap()整个文件中有什么意义吗?
由于您正在读取文件,因此性能将受I/O限制.几乎无论你在记忆中做了什么,对整体性能的影响都无法被发现.
我更喜欢这operator>>条路线,因为这会让我使用C++的输入迭代器习语:
std::istream_iterator<Person> eos;
std::istream_iterator<Person> iit(inputFile);
std::copy(iit, eos, std::back_inserter(person_vector));
Run Code Online (Sandbox Code Playgroud)
甚至
std::vector<Person> person_vector(
std::istream_iterator<Person>(inputFile)
, std::istream_iterator<Person>()
);
Run Code Online (Sandbox Code Playgroud)