c – 哪个STL容器可以在两个方向上生长?

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

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

欣赏你的想法.

谢谢

维诺德

解决方法:

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

Quoting cppreference.com

std::deque (double-ended queue) is an indexed sequence container that allows fast insertion and deletion at both its beginning and its end. In addition, insertion and deletion at either end of a deque never invalidates pointers or references to the rest of the elements.

它的接口类似于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
上一篇:c – 对STL或!STL,这是的问题


下一篇:C容器集数组功能