我有一个文件说它somefile.txt按排序顺序包含名称(单个单词).
我想在按顺序添加新名称后更新此文件.
以下哪种方式最受欢迎?为什么?
用一个 std::multiset
std::multiset<std::string> s;
std::copy(std::istream_iterator<std::string>(fin),//fin- object of std::fstream
std::istream_iterator<std::string>(),
std::inserter(s, s.begin()));
s.insert("new_name");
//Write s to the file
Run Code Online (Sandbox Code Playgroud)
要么
用一个 std::vector
std::vector<std::string> v;
std::copy(std::istream_iterator<std::string>(fin),
std::istream_iterator<std::string>(),
std::back_inserter(v));
v.push_back("new_name");
std::sort(v.begin(),v.end());
//Write v to the file.
Run Code Online (Sandbox Code Playgroud)
多重插入对象的插入速度比向量慢,但它们保持排序.多集合可能占用比向量更多的内存,因为它必须保存指向内部树结构的指针.这可能并非总是如此,因为向量可能具有一些空白空间.
我想如果您需要增量增长的信息,但总是准备立即访问,那么多组获胜.
如果您一次性收集数据而无需按顺序访问它,则将其推送到向量然后排序可能更简单.因此,存储数据的动态性是真正的标准.