[英]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.