STL容器设计原理

一、内存映像     
容器在概念上是一种可以动态增大或减小的模型,所以其元素在实现上不可能直接保存在容器对象里,而应该保存在自由内存或堆上。这里要区分两个概念“容器对象”和“容器元素对象”。容器本身就是一个C++对象,其大小在运行时是不可以改变,因此容器应该有办法指示其每一个元素在内存中的位置,以便用户能通过容器对象找到其中的元素对象。

二、存储方式和访问方式
     向量和链表是两种最基本的动态结构,也是STL中两种最基本的容器,分别对应动态数组和链表结构,同时他们分别代表了内存中同类型批量数据存放的两种基本方式:连续存储和随机存储(不连续存储)。
     不同的存储方式决定了不同的访问方式,顺序访问和随机访问。所谓的随机访问是指通过开销恒定的算数运算来得到任一元素的内存地址的访问方法。而顺序访问则是指从第一个元素开始遍历,直到找到所需的元素为止。C++/C的内置数组和vector既可以随机访问也可以顺序访问的容器,而list则只能顺序访问。
     只要底层存储机制采取连续存储方式的容器,就可以随机访问其中任一元素,否则只能顺序访问,任何容器都能顺序访问。
三、容器的分类
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值