繁体   English   中英

哪个STL容器可以向两个方向生长?

[英]Which STL container could grow in both directions?

给定一个开头的迭代器,一个接一个的结尾,STL中是否有一个容器允许我动态地同时从两端填充数据,而不必先分配最大大小? 根据我的理解,我可以使用像矢量或字符串这样的模板,它可以使用push_back()方法在向前方向上动态增长。 或者我可以使用具有预定大小的阵列之类的模板,可以同时在正向和反向方向上访问以填充数据。

我正在寻找的是一个模板,它允许我灵活地增加容器,如矢量,同时支持来自任何一端的数据填充,如数组。 在数组的情况下,开始和结束迭代器之间存在预定的间隙(由于固定的大小); 在动态容器模板的情况下,当我从任一端同时填充数据时,我希望这个差距能够动态增长。

欣赏你的想法。

谢谢

维诺德

这听起来正是为std :: deque (双端队列)创建的:

引用cppreference.com

std :: deque(双端队列)是一个索引序列容器,允许在其开头和结尾快速插入和删除。 此外,在双端队列的任何一端插入和删除都不会使指针或对其余元素的引用无效。

它的接口类似于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM