我将有大约1000个字符串需要按字母顺序排序。
根据我的阅读,std :: set已被排序。 std :: vector不是。 std :: set似乎是一个更简单的解决方案,但如果我要使用std :: vector,我需要做的就是使用std :: sort来对字符串进行字母顺序排列。
我的应用程序可能或者可能不是性能关键,所以性能不一定是这里的问题(但是),但是因为我需要遍历容器来将字符串写入文件,所以我读过迭代std :: set比通过std :: vector迭代慢一点。
我知道这可能无关紧要,但我想知道在这种情况下你会选择哪一个。
哪个stl容器最适合我的需求?感谢。
答案 0 :(得分:2)
确保使用reserve为矢量预先分配内存,因为在这种情况下您提前知道了大小。这可以防止在添加到向量时重新分配内存(非常昂贵)。
另外,如果你使用[]表示法而不是push_back(),你可以节省一点时间来避免对push_back()进行边界检查,但这确实是学术性的和非实质性的,甚至可能在编译器优化中也不是这样。 : - )