我知道C ++和Java中的Vector,它就像动态数组,但我找不到Vector数据结构的任何一般定义。那么Vector是什么? Vector是一般数据结构(如arrray,stack,queue,tree,...)还是只是一种取决于语言的数据类型?
答案 0 :(得分:6)
它是一个具有动态分配空间的数组,每次超过此空间时,内存中的新位置都会被分配,旧数组将被复制到新数据中。那时旧的就被释放了。
此外,vector通常会分配比需要更多的内存,因此在添加新元素时不必复制所有数据。
看起来,列表可能要好得多,但并不一定如此。如果你不经常改变你的矢量(就大小而言),那么计算机的高速缓存存储器的功能要好于矢量而不是列表,因为它们在存储空间中是连续的。缺点是当你有大矢量时,你需要扩展。然后你必须同意将大量数据复制到内存中的另一个空间。
还有什么。您可以将新数据添加到矢量的末尾和前面。因为Vector类似于数组,所以每次要将元素添加到向量的开头时,都必须复制所有数组。在向量末尾添加元素效率更高。链接列表没有这样的问题。
Vector可以随机访问它的内部保存数据,而列表,队列和堆栈则不会。
答案 1 :(得分:0)
向量与动态数组相同,可以调整大小 插入或删除元素时,它本身会自动显示。
矢量元素被放置在连续的存储中,以便可以 使用迭代器访问和遍历。
在矢量中,数据插入到末尾。