1

我将有大约 1000 个需要按字母顺序排序的字符串。

从我读过的内容来看,std::set 已排序。std::vector 不是。std::set 似乎是一个更简单的解决方案,但如果我要使用 std::vector,我需要做的就是使用 std::sort 来按字母顺序排列字符串。

我的应用程序可能对性能至关重要,也可能不重要,因此性能不一定是这里的问题(现在),但是由于我需要遍历容器以将字符串写入文件,因此我已经阅读了遍历std::set 比遍历 std::vector 慢一点。

我知道这可能无关紧要,但我想听听你们在这种情况下会选择哪一个。

哪个 stl 容器最适合我的需要?谢谢。

4

1 回答 1

2

std::vector 一次性调用 std::sort 似乎是做你所追求的最简单的方法,从计算上讲。std::set 通过键提供动态查找,您在这里并不真正需要,如果您必须处理重复项,事情会变得更加复杂。

确保使用 reserve 为向量预分配内存,因为在这种情况下您提前知道大小。这可以防止在添加到向量时重新分配内存(非常昂贵)。

此外,如果您使用 [] 表示法而不是 push_back(),您可能会节省一些时间,避免对 push_back() 进行边界检查,但这确实是学术性的和非实质性的,甚至可能不适用于编译器优化。:-)

于 2013-06-03T13:31:39.837 回答