是否有任何已创建的结构只是basic array
的{{1}}?
我的意思是你使用doubly linked list nodes
它会直接从数组(get(int index)
)返回元素。有了这个结构,我也很容易做到foreach因为每个元素都会相互链接,所以我不需要考虑空白数组的位置。
答案 0 :(得分:4)
这是一个小的 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];
答案 1 :(得分:3)
根据您的描述,我认为最合适的数据结构是双端队列;或者,在C ++中,std::deque
。
{push,pop}_{front,back}
是O(1)
O(1)
随机访问您正在寻找的get
操作是operator[]
或std::deque::at
。
一些考虑因素是插入/移除不在结构的极端(即,在中间某处)的元素是元素数量的平均情况O(n)
,原因与它相同O(n)
{ {1}}从基本数组中删除元素。
答案 2 :(得分:2)
我认为您正在寻找的是STL中已经存在的容器双端队列。见 - > http://en.cppreference.com/w/cpp/container/deque 如果它不是您要找的那个,您可能会在这里找到您需要的容器 - > http://www.cplusplus.com/reference/stl/
希望这个帮助