向量和列表的区别
向量:Vector是一种动态数组,可以在插入或删除元素后自动调整大小。Vector 中的元素被放置在连续存储中,以便可以使用迭代器访问和遍历它们。元素被插入到向量的末尾。
例子:
vector v;
v.insert(5);
v.delete();
列表: List是一个双链序列,支持前向和后向遍历。开头、结尾和中间的插入和删除所花费的时间是恒定的。它具有非连续内存并且没有预先分配的内存。
例子:
list l;
l.insert_begin(5);
l.delete_end();
下面是 向量 和 列表 之间的区别表:
向量 | 列表 |
---|---|
向量有连续的记忆。 | 列表具有非连续内存。 |
向量是同步的。 | 列表不同步。 |
矢量可能有一个默认大小。 | 列表没有默认大小。 |
在向量中,每个元素只需要它自己的空间。 | 在列表中,每个元素都需要额外的空间用于保存该元素的节点,包括指向列表中下一个和前一个元素的指针。 |
最后插入需要恒定的时间,但在其他地方插入是昂贵的。 | 插入很便宜,无论它出现在列表的哪个位置。 |
向量是线程安全的。 | 列表不是线程安全的。 |
向量末尾的删除需要恒定的时间,但其余时间为 O(n)。 | 无论它出现在列表的哪个位置,删除都很便宜。 |
可以随机访问元素。 | 元素的随机访问是不可能的。 |
如果元素被添加到向量中或从向量中删除,迭代器将变得无效。 | 如果元素被添加到列表中或从列表中删除,迭代器是有效的。 |