简单独特的STL容器

时间:2013-02-12 13:38:08

标签: c++ stl

是否有一个独特的容器,例如std::list具有简单功能(pushpopclear等),而不是与std::set不同的排序顺序,或者我可能需要扩展std::list并添加我自己的push_unique方法))?

1 个答案:

答案 0 :(得分:6)

STL应该提供高效的容器。

不允许重复的容器需要支持快速查找,以确定您想要的值是否已经存在于集合中。

std::set将项目保存在红黑树中,这样就可以进行O(log(n))查找,插入和删除。

std::unsorted_set允许进行常量查找,插入和删除,但是你需要为大多数UDT类型提供一个哈希函数,你需要处理诸如rehashing之类的问题,这会导致迭代器失效,而你您的商品没有任何已定义的订单(甚至不包括广告订单)。

如果您想使用std::vector之类的简单集合而不允许重复,则需要提供自己的适配器。

但是,我仍然无法弄清楚为什么你有一个排序容器的问题,例如std::set如果,如你所说,订单对你无关紧要。