STL或Boost中是否有List类型的数据结构?

时间:2010-11-05 22:00:39

标签: c++ boost stl qt4

只是一个简短的QList简介,QList类似于QVector和STL向量,但此外它还在开头保留了一些空间; (最后也是) 我正在寻找类似于STL的东西,如果不是至少Boost

在开头预留空间可以改善前置或删除第一项(常量时间),因为缓冲区可以向后增长。根据插入位置改进插入。 那么有没有人知道STL / C ++中类似的数据结构? 感谢。

3 个答案:

答案 0 :(得分:6)

std::deque会在固定时间内提供前后插入移除,如果它正是您要查找的内容。

答案 1 :(得分:3)

如果您希望在序列的开头和结尾有效插入和删除,请使用std::deque

答案 2 :(得分:1)

如果您知道容器大小的上限并且不计划容器中间插入,则可以使用boost::circular_buffer

如果你正在进行大量的中间容器插入deque将是比vector更好的选择,因为它(通常)将成员分组为固定大小的块,而不是一个连续的块存储器中。

注意 - QList实际上声明它使用指向对象的数组,如果它们是非平凡的。要在C ++中模拟这一点,您可以使用deque<MyClass*>或(更好)某些智能指针包装器MyClass,例如unique_ptrshared_ptr,以防止{{1}过度复制在家务管理中。

  

在内部,QList表示为   指向类型项的指针数组   T.如果T本身是指针类型或者是   基本类型不大于a   指针,或者如果T是Qt的共享之一   类,然后QList存储   直接在指针数组中的项目。   对于千件以下的清单,这个   数组表示允许非常   快速插入中间,它   允许基于索引的访问。