当前位置: 首页 > article >正文

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。


http://www.kler.cn/a/419469.html

相关文章:

  • 【Robocasa】Code Review
  • 浅论数据分析的智能化和自动化趋势
  • MacOS安装MySQL数据库和Java环境以及Navicat
  • FreeRTOS之vTaskStartScheduler实现分析
  • CENet及多模态情感计算实战
  • spring导出多个文件,要求打包成压缩包
  • 详解:HTTP/HTTPS协议
  • 精通.NET鉴权与授权
  • 操作系统、虚拟化技术与云原生01
  • mini主机通过内网穿透做成服务器
  • MySQL技巧之跨服务器数据查询:进阶篇-从A服务器的MySQ数据库复制到B服务器的SQL Server数据库的表中
  • Linux:进程间通信之system V
  • 服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例
  • 3d行政区划-中国地图
  • 【Linux】线程安全与锁概念——自旋锁、读写锁
  • 三分钟快速掌握——Linux【vim】的使用及操作方法
  • Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用
  • 类型转换与IO流:C++世界的变形与交互之道
  • QT学习笔记-QStringList,QTimer
  • 生成树详解(STP、RSTP、MSTP)
  • 飞睿科技乐鑫一级代理商ESP32-C6 WiFi模块芯片闪耀 Apple WWDC 2024
  • Docker--Docker Image 实例操作
  • React Native中的Android环境搭建
  • 优先算法 —— 双指针系列 - 四数之和
  • Git操作学习
  • 【技巧】Mac上如何显示键盘和鼠标操作