提问人:Vinod 提问时间:5/14/2019 更新时间:5/14/2019 访问量:259
哪个 STL 容器可以双向增长?
Which STL container could grow in both directions?
问:
给定一个迭代器到开头,一个迭代器经过结尾,STL 中是否有一个容器可以允许我从两端动态同时填充数据,而不必事先分配最大大小?根据我的理解,我可以使用像向量或字符串这样的模板,可以使用 push_back() 方法在正向动态增长。或者,我可以使用具有预定大小的模板,例如数组,可以同时在正向和反向方向上访问以填充数据。
我正在寻找的是一个模板,它允许我灵活地使用动态增长的容器(如向量),同时支持从任何一端(如数组)进行数据填充。在数组的情况下,开始迭代器和结束迭代器之间存在预定的间隙(由于固定大小);在动态容器模板的情况下,我希望当我从两端同时填充数据时,这种差距会动态增长。
欣赏你的想法。
谢谢
维诺德
答:
6赞
Galik
5/14/2019
#1
这听起来正是 std::d eque(双端队列)的创建目的:
引用 cppreference.com
std::d eque(双端队列)是一个索引序列容器,允许在其开头和结尾快速插入和删除。此外,在 deque 的两端插入和删除永远不会使指向其余元素的指针或引用无效。
它的界面类似于 a,但有效地允许在正面和背面添加:std::vector
std::deque<int> dq;
dq.push_back(5);
dq.push_front(9);
std::cout << dq[0] << '\n';
std::cout << dq[1] << '\n';
输出:
9
5
评论