【发布时间】:2018-03-31 08:43:51
【问题描述】:
在决定定义自己的数据结构之前,我正在尝试找出最好的 C++ 容器。
例如,在 Vectors (C++) 中是否有任何方法可以固定大小,以便我可以继续从一端推送和弹出元素,如果我推送的元素超过大小,它应该自动从前面删除旧元素.
如果不是向量,还有别的吗?
【问题讨论】:
-
Boost 库有
boost::circular_buffer -
@jogojapan 谢谢! ,我想这正是我想要的。但是如果需要,我可以动态更改大小吗? .即,在使用大小 7 循环缓冲区一段时间后,如果我希望它调整大小以容纳 9 个元素并继续其行为,是否有可能?
-
是的,当然。 Boost 版本有一个
resize()函数。如果您自己实现循环缓冲区,您只需确保使用大小灵活的底层数据结构,例如std::vector而不是std::array。 -
@xskxzr:当心,这个问题的最高投票答案很糟糕(我只是投了反对票)。但是,接受的答案是正确的(所以我只是赞成)。
标签: c++ vector data-structures