[英]simple unique STL container
是否有一个像std::list
这样的唯一容器,它具有简单的功能( push
, pop
, clear
等),并且不像std::set
那样没有排序顺序,或者我可能需要扩展std::list
并添加自己的push_unique
方法))?
STL应该提供有效的容器。
不允许重复的容器需要支持快速查找,以确定想要的值是否已经存在于集合中。
std::set
使该项目按一棵红黑树排序,这使得可以进行O(log(n))查找,插入和删除。
std::unsorted_set
允许进行恒定时间的查找,插入和删除,但是您需要为大多数UDT类型提供哈希函数,需要处理诸如重新哈希等会导致迭代器无效的问题,并且您无需进行任何操作为您的商品定义的顺序(甚至不是插入顺序)。
如果要使用简单的集合(例如std::vector
而不允许重复,则需要提供自己的适配器。
但是,我仍然无法弄清为什么排序容器对诸如std::set
这样的容器有问题,正如您所说的那样,顺序对您而言并不重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.