Bootstrap

STL:相同Size大小的vector和list哪个占用空间多?

在C++中,vectorlist是两种不同的序列容器。vector底层是连续的内存,而list是非连续的,分散存储的。因此,vector占用的空间更多,因为它需要为存储的元素分配连续的内存空间。

具体占用多少空间,取决于它们分别存储了多少元素,以及每个元素的大小。在空容器的情况下,vector可能只需要存储一些小的控制信息,而list则需要至少存储一个节点的信息(包括一个指针指向下一个节点)。随着元素数量的增加,vectorlist的差距会更加明显,因为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。

;