我知道在C++和Java中有Vector,它类似于动态数组,但我找不到任何关于Vector数据结构的通用定义。那么Vector是什么?它是一种通用的数据结构(像数组、栈、队列、树等),还是它只是一种依赖于语言的数据类型?
我知道在C++和Java中有Vector,它类似于动态数组,但我找不到任何关于Vector数据结构的通用定义。那么Vector是什么?它是一种通用的数据结构(像数组、栈、队列、树等),还是它只是一种依赖于语言的数据类型?
这是一个具有动态分配空间的数组,每当超出此空间时,就会为其分配新的内存空间,并将旧数组复制到新数组。然后释放旧内存。
此外,vector通常会分配比需要更多的内存,这样当添加新元素时,就不必复制所有数据。
可能看起来链表比向量好得多,但并非总是如此。如果您不经常更改vector(在大小方面),那么计算机的高速缓存内存使用向量比列表更好,因为它们在内存中连续。缺点是当您有较大的向量需要扩展时,您必须同意将大量数据复制到另一个内存空间。
还有,您可以向Vector末尾和前端添加新数据。因为Vector类似于数组,所以每次想要向向量开头添加元素时,必须复制整个数组。向向量末尾添加元素效率更高。链表则没有这样的问题。
Vector可以随机访问其内部保存的数据,而列表、队列和堆栈则不行。
向量与动态数组相同,具有自动调整大小的能力,当插入或删除元素时会自动调整。
向量元素放置在连续的存储空间中,因此可以使用迭代器访问和遍历。
在向量中,数据是在末尾插入的。