哪个STL容器可以双向增长?

Vin*_*nod 3 c++ containers stl

给定一个从头到尾的迭代器,STL中是否有一个容器,可以让我动态地同时从两端填充数据,而不必事先分配最大大小?根据我的理解,我可以使用诸如vector或string之类的模板,可以使用诸如push_back()方法沿向前方向动态增长。或者,我可以使用具有预定大小的数组之类的模板,该模板可以同时在正向和反向访问,以填充数据。

我正在寻找的是一个模板,该模板将使我能够灵活地适应动态增长的容器(如矢量),同时允许从两端(如数组)进行数据填充。在数组的情况下,开始和结束迭代器之间存在预定间隙(由于固定大小);对于动态容器模板,当我从任一端同时填写数据时,我希望这个差距会动态增长。

欣赏你的想法。

谢谢

维诺德

Gal*_*lik 6

这听起来完全是为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';
Run Code Online (Sandbox Code Playgroud)

输出:

9
5
Run Code Online (Sandbox Code Playgroud)