在 C++ 中使用集合 vs 使用数组

toi*_*ine 3 c++ arrays set

我想从一个搜索函数中保存一组迭代器。有没有“更好的方法”来保存一组迭代器(数组与集合)。每种方法在内存效率方面的优缺点是什么?

谢谢。

Tim*_*ner 6

在不了解您要完成的任务的情况下谈论哪个更好的数组或集合是没有意义的。

您应该考虑一个问题:迭代器指向什么样的容器,以及该容器是否会被更新?

例如,如果您将迭代器存储到向量中(将这些迭代器放在哪里无关紧要),并且您更新了该向量,则之前存储的迭代器可能无效。存储迭代器时要非常小心。

听起来您正在缓存结果以提高速度。如果您需要缓存结果,最好使用其中一种无序容器。对搜索结果使用与对缓存相同的键。不要存储迭代器,只存储查询键和实际结果。unordered_set 的查找时间为 O(1) 并且它们不会占用太多空间,因为它们会散列键并存储结果。