[英]Which data structure is like a combination of a doubly-linked list and an array?
是否有任何已經創建的結構僅僅是doubly linked list nodes
basic array
?
我的意思是,然后您使用get(int index)
它將直接從數組( array[i].element
)返回元素。 有了這種結構,我也可以輕松地進行foreach,因為每個元素都將彼此鏈接,因此我無需考慮空白數組的位置。
問:為什么我需要這個? 答:我有無限的內存,我知道我需要多大的數組,並且我希望這種結構最快。
這是一個小的C ++ 11容器指南 ,只需設置您的約束並遵循箭頭:
IMO std::deque
是最有可能的候選人。
如果您想自己創建一些東西,這是一個看起來像這樣的示例:
struct Node{
// constructor
Node (int v, Node* n = 0, Node* p = 0)
: value(v), next(n), prev(p) { }
// data member
int value;
// pointer to next node
Node* next;
// pointer to previous node
Node* prev;
};
size_t number_of_nodes = 10;
Node* ptr = new Node[number_of_nodes];
根據您的描述,我認為最合適的數據結構將是雙端隊列。 或者,在C ++中,是std::deque
。
{push,pop}_{front,back}
是O(1)
O(1)
隨機訪問 您要查找的get
操作是operator[]
或std::deque::at
。
一些考慮因素是,不在結構的極性末端(即中間某處)的元素的插入/刪除是元素數量的平均情況O(n)
,出於相同的原因,從元素中刪除元素是O(n)
。基本數組。
我認為您正在尋找的是STL中已經存在的容器雙端隊列。 請參閱-> http://en.cppreference.com/w/cpp/container/deque如果不是您要找的容器,則可能在這里找到所需的容器-> http://www.cplusplus。 com / reference / stl /
希望這個幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.