在C++中,vector
和list
是两种不同的序列容器。vector
底层是连续的内存,而list
是非连续的,分散存储的。因此,vector
占用的空间更多,因为它需要为存储的元素分配连续的内存空间。
具体占用多少空间,取决于它们分别存储了多少元素,以及每个元素的大小。在空容器的情况下,vector
可能只需要存储一些小的控制信息,而list
则需要至少存储一个节点的信息(包括一个指针指向下一个节点)。随着元素数量的增加,vector
和list
的差距会更加明显,因为vector
需要连续的内存空间,可能还需要重分配更多的内存来满足增长需求,而list
只需要在列表中增加新的节点即可。
总的来说,由于vector
的连续内存存储特性,在大多数情况下,相同大小的元素,vector
占用的空间会更多。
测试:
#include <iostream>
#include <set>
#include <vector>
#include <list>
int main()
{
std::vector<int> test_vec;
std::list<int> test_list;
// 同样插入100个元素
for (int i = 0; i < 100; i++)
{
test_vec.push_back(i);
test_list.push_back(i);
}
std::cout << "Vector size: " << sizeof(test_vec) << std::endl;
std::cout << "List size: " << sizeof(test_list) << std::endl;
std::cout << "Finished!\n";
return 0;
}
运行结果:
同样插入100个元素,vector的占用确实高于list。