[英]C++: mixture between vector and list: something like std::rope?
当存储一堆项目并且我不需要随机访问容器时,我使用的是std::list
,这很好。 但是,有时候(特别是当我只是将条目推回到后面并且从不删除中间的某个地方时),我希望我有一些具有更好性能的结构来添加条目。
std::vector
很糟糕,因为:
std::list
很糟糕,因为:
所以,介于两者之间的是我想要的东西。
基本上,我想要像std::list< boost::array<T, 100> >
那样的东西。 或者也许代替100
,让它为4096/sizeof(T)
。 也许std::list< std::vector<T> >
并且第一个向量可以很小,然后可以进一步增长。 实际上我想从使用中隐藏它,所以我可以做一个mycontainer.push_back(x)
。
std::rope
有点类似,但标准中没有。
在Boost中有这样的东西吗?
你考虑过使用std::deque
吗? 它的元素不是连续存储的,但它允许随机访问元素; 如果你只是在序列的开头或结尾插入元素,它可能会比std::vector
提供更好的性能。
是的,它叫做std :: vector。 这是O(1)时间push_back,几乎总是比std :: list快。 (是的,它也有记忆效率)
std :: list最重要的特性是从中间删除/插入常量时间。 如果你不需要它,请选择std :: vector。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.