我想在一些容器中存储大量对(大约10 ^ 7对)。我想要执行的操作只有insert
和find
。
由于我们可以使用std::set
和std::map
来存储对,我想知道哪个容器在速度方面更好。我搜索了类似的问题,但没有找到答案。所以请有人回答我的问题......
答案 0 :(得分:1)
std::pair<int, int>
运算符少于第二个值之间的差异(因此它将在std::set<std::pair<int, int>>
中使用),而std::map
对第二个值不执行任何操作。结果意味着:
std::map<int, int> m;
std::set<std::pair<int, int> > s;
m.insert(std::make_pair(0, 0));
m.insert(std::make_pair(0, 1)); // it won't be inserted as key is duplicated
s.insert(std::make_pair(0, 0));
s.insert(std::make_pair(0, 1)); // it will be inserted
更新:在大多数STL实现中set
和map
实现是相同的(平衡RB树,通常set
和map
来自相同的模板基类) ,在你的情况下,只是使用较少的运算符的方式将是差异。