是否有一个独特的容器,例如std::list
具有简单功能(push
,pop
,clear
等),而不是与std::set
不同的排序顺序,或者我可能需要扩展std::list
并添加我自己的push_unique
方法))?
答案 0 :(得分:6)
STL应该提供高效的容器。
不允许重复的容器需要支持快速查找,以确定您想要的值是否已经存在于集合中。
std::set
将项目保存在红黑树中,这样就可以进行O(log(n))查找,插入和删除。
std::unsorted_set
允许进行常量查找,插入和删除,但是你需要为大多数UDT类型提供一个哈希函数,你需要处理诸如rehashing之类的问题,这会导致迭代器失效,而你您的商品没有任何已定义的订单(甚至不包括广告订单)。
如果您想使用std::vector
之类的简单集合而不允许重复,则需要提供自己的适配器。
但是,我仍然无法弄清楚为什么你有一个排序容器的问题,例如std::set
如果,如你所说,订单对你无关紧要。