std :: mutiset vs std :: vector用于读取和写入已排序的字符串到文件

P0W*_*P0W 3 c++ stl

我有一个文件说它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)

Dav*_*man 6

多重插入对象的插入速度比向量慢,但它们保持排序.多集合可能占用比向量更多的内存,因为它必须保存指向内部树结构的指针.这可能并非总是如此,因为向量可能具有一些空白空间.

我想如果您需要增量增长的信息,但总是准备立即访问,那么多组获胜.

如果您一次性收集数据而无需按顺序访问它,则将其推送到向量然后排序可能更简单.因此,存储数据的动态性是真正的标准.