[英]Dynamic allocation and random access: Raw, Smart, Deque, Vector. Why raw so fast, and deque so slow?
[英]Why is random access of deque O(1) time
我讀過STL 雙端隊列按索引訪問是 O(1)? deque 中元素的隨機訪問如何提供恆定的時間復雜度? 我仍然不清楚為什么保證 O(1) 隨機訪問。
我了解 STL 中的雙端隊列被實現為指向連續固定大小塊的指針數組。 所以我理解在固定大小的塊上循環是 O(1),因為它與雙端隊列的大小無關。 但是要找到要循環的塊,我們需要循環一個指針數組,我不認為這是一個 O(1) 操作,因為指針數組與雙端隊列的大小成正比?
例如,如果我們有一個n
大小的雙端隊列,並且固定的塊大小是m
,我們的指針數組將是大小上限(n/m),即 O(n)? 我是不是誤會了什么?
您沒有遍歷指針的“數組”。 查找指針是一個常量時間操作,因為您可以通過將常量添加到指向指針數組中第一個索引的指針來查找塊。
例如,使用您的符號,如果您有一個n
大小的deque
和m
大小的塊,要找到第j
個元素,您需要找到指向包含第j
個元素的塊的指針,如你說。 但這不涉及循環指針“數組”。 在這種情況下,需要添加的常數是j/m
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.