2016-12-10 32 views
0

在C++中是否有任何數組類型的數據結構(如向量,堆棧,隊列等),其中我可以彈出/刪除任何索引中的元素,以便數組將自動調整大小?在C++中彈出任何元素後自動調整數組大小

實施例:

int arr[]={2,5,8,10,6}; 
arr[2].pop(); 

然後是陣列將變成這樣:

arr[]={2,5,10,6}; 
+2

-std :: vector' –

回答

3

std::vector具有erase()方法,其去除在給定位置的元素,並減小了尺寸陣列。擦除位置由迭代器指定,但將n添加到begin()以獲取它是很微不足道的。請注意,erase()的複雜度爲O(n)

+0

關於'std :: vector'的性能 - 這裏是2014年Build 2014上的Herb Sutter談論預取以及它是如何快速迭代向量:https://youtu.be/ TJHgp1ugKGM?t = 1410 –

+0

由於現代CPU的高速緩存,我意識到向量的反直覺性能。但是,不改變它是'O(n)'的事實。 –

相關問題