簡體   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