Vector 为什么不同时使用向量和列表呢?

Vector 为什么不同时使用向量和列表呢?,vector,data-structures,linked-list,Vector,Data Structures,Linked List,这可能是一个相当愚蠢的问题,但既然知道在列表(单链接或双链接)中搜索元素的效率很低,为什么不使用向量或动态数组按顺序存储列表中的元素呢,因此,使元素更容易访问?链表过去更为重要,因为它们是非连续存储的,这有利于内存管理。链表和向量/数组的搜索时间复杂度均为O(N)。如果事先知道索引,访问数组元素的速度会更快。链表适用于经常在数组开头插入元素的特殊情况。链表允许您在O(1)时间内完成此操作,而不是数组O(n),因为其他元素需要移动。链表的要点是允许O(n)插入和删除,这是向量无法实现的。也就是说,

这可能是一个相当愚蠢的问题,但既然知道在列表(单链接或双链接)中搜索元素的效率很低,为什么不使用向量或动态数组按顺序存储列表中的元素呢,因此,使元素更容易访问?

链表过去更为重要,因为它们是非连续存储的,这有利于内存管理。链表和向量/数组的搜索时间复杂度均为O(N)。如果事先知道索引,访问数组元素的速度会更快。链表适用于经常在数组开头插入元素的特殊情况。链表允许您在O(1)时间内完成此操作,而不是数组O(n),因为其他元素需要移动。

链表的要点是允许O(n)插入和删除,这是向量无法实现的。也就是说,现在几乎不应该使用链表,因为向量更紧凑,更适合缓存,即使在复制元素以删除/插入之后,通常也会产生更好的性能。我想不是,但假设我需要构建一个类似于Hunt the Wumpus中的地图:每个房间都连接到其他3个房间,房间在生成后不会改变。我想不出一个更简单的代码表示方法,而不是创建一个结构房间,它有指向其他3个房间的指针,以某种方式链接这些房间,然后将它们存储在一个向量中。