给定一个开头的迭代器,一个接一个的结尾,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