我有一個測試來了,它似乎有些問題涉及到STL類模板函數。許多處理算法的複雜性,所以我試圖讓基本操作的複雜性下降。我感到困惑的是插入操作。插入操作需要特定的容器允許進行插入開始從一些位置由一個iterator指出:在STL類模板中插入操作
vector<int> vector1;
for (int i=1; i<6; i++) vector1.push_back(i);
vector<int>::iterator it;
it = vector1.begin();
vector1.insert(it+2,10);
現在,我認識到,這在插入操作將承擔大部分插入操作線性時間。但是,如果我插入單個項目,這是否仍然需要線性時間?我問這是因爲對於STL列表,插入單個項目需要一定的時間。我覺得這是因爲名單是一個動態雙鏈環形鏈。
載體是動態的,連續的存儲結構,因此這意味着,對於前矢量任何插入[大小-1]中,插入後的所有項目將有一個單位向上移動?
現在,爲雙層。我正在考慮將STL作爲一個由數組中的指針指向的單鏈鏈接系統;它是否正確?如果是這樣的話,單個插入到一個deque中,而不是在前面或後面,是O(1)?
謝謝,很抱歉有這麼多問題。
如果deque插入是O(N),這是迭代通過一系列元素到達插入點的結果嗎? – jonnywalkerr 2013-04-30 04:24:23
@Jonnywalkerr:我對此的迴應相當長,所以在答案中而不是在評論框中。 – 2013-04-30 04:29:40
謝謝你,那個解釋很完美! – jonnywalkerr 2013-04-30 04:38:10