0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++之STL库中的容器

汽车电子技术 来源:嵌入式情报局 作者:情报小哥 2023-02-21 10:55 次阅读

1、容器

前面跟大家介绍过STL库,STL主要是由6大部分组成,其中第一个提到的就是容器,容器在介绍STL中小哥有简单的跟大家介绍过,今天稍微再详细介绍一下。

首先需要看看STL中常用的一些容器及分类:

图片

所谓容器表面上的意思就是用于容纳数据,存储数据的对象。

从上图可以看出,基础的容器根据其所存储数据的形式分为顺序容器和关联容器。

顺序容器当然就是数据成员顺序存储的形式,是一种线性结构,每个数据成员都有固定的位置,所以成员都是按位置来进行存储,类似于C语言中的数组形式。

关联容器是一种非线性结构,没有严格的顺序,主要是按数值来进行存储,通常通过迭代器进行访问,迭代器目前可以简单理解为"指针"。

2、顺序容器

顺序容器主要是三种:vector、list和deque

vector向量,其操作方式类似于动态数组,并且可以像数组一样直接进行访问,且通常只在后端进行添加与删除数据,中间插入效率太低,如果vector向量空间不够,其会动态进行创建。

list双向链表,该链表与我们平常的链表数据结构类似,其索引性能较差,不能进行随机数据访问,不像vector可以直接进行数据访问,而是需要从头不断的进行遍历,但是双向链表list的优点在于可以轻松的向链表容器中插入数据。

deque双端队列属于vector与list的折中版本,支持这两者的大部分操作,不过其性能上都没有其他两种基本容器好。

图片

3、关联容器

关联容器主要有四种:map、set、multimap和multiset。

这些关联容器都是基于平衡二叉树来实现的,所以其也是一种链式存储方式,不过相比顺序存储从一条线上扩展到了一个面。

当需要在中间插入元素的时候,对于vector是最慢的,list当然是最快的,而对于关联容器采用二叉树结构,中间插入元素所要改变的关系相比vector要少很多,但比list要多一些。

而对于数据元素的检索,vector无疑是最快的,list当然是最慢的,但对于关联容器其检索效果虽然比不过vector,但由于二叉树的结构查找速度比list要快很多,所以这也就是set容器的优势。

而对于map采用一种key与value的映射关系,相比vector用数字下标进行索引,map能够提供一种用字符来索引的功能,这也就是他的特点,当然也可以理解set是一种key与value相等的map。

而对于mulitset与multimap仅仅只是在set和map容器的元素唯一性上进行了可以不唯一的扩展。

4、容器适配器

首先容器适配器并不是容器,而是通过封装或限制容器的接口构造一些有特殊用途的适配器结构。

STL中主要包含三种适配器:

stack---栈,先进后出

queue--队列,先进先出

priority_queue--优先级队列

相比普通队列,优先级队列在插入时会根据关键词自动排序,出队列会按照排列顺序优先出队列。

这些容器适配器也可以通过选择不同的基础容器来实现,一般情况下会选择默认容器来进行适配,当然也可以进行手动修改,但不是每种适配器都可以由任意基础容器来进行实现,毕竟每种基础容器存在一些功能上的限制。

最 后

好了,这里小哥就简单介绍了STL中的容器和容器适配器的整体介绍,后面会对每个容器举例介绍,本系列文章后续还会更新,记得关注学习哦。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    499

    浏览量

    22139
  • STL
    STL
    +关注

    关注

    0

    文章

    86

    浏览量

    18405
收藏 人收藏

    评论

    相关推荐

    c语言入门知识STL

    这周终于可以给大家把STL方面的面试题总结出来了,突然发现它里面的细节非常多,只有你想不到的,没有它没有的。对于C++程序员来说,STL库里面的知识也是非常重要的,只要想在技术这条路线上有长远的发展,那么就一定要掌握它。不管是学
    的头像 发表于 03-10 09:31 1185次阅读

    C++STL算法(二)

    C++STL算法(二)
    的头像 发表于 07-18 14:49 1148次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b><b class='flag-5'>STL</b>算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的头像 发表于 07-18 15:00 1401次阅读
    <b class='flag-5'>c++</b><b class='flag-5'>之</b><b class='flag-5'>STL</b>算法(三)

    C++文件操作

    C++文件操作
    的头像 发表于 07-21 10:52 1167次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>文件操作

    C++零基础教程STL容器stack容器,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:27:23

    C++零基础教程STL容器queue容器,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:41:21

    C++零基础教程STL容器deque容器,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:41:55

    C++ STL的概念及举例

      本篇文章是作者本人使用STL 后的一些看法, 对於想要靠此文章学习STL, 是不可能的. 建议叁后面介绍的一些书入门.   STL的概念   在STL
    发表于 08-30 11:39 1427次阅读

    详细剖析C++的的3种容器

    容器是随着面向对象语言的诞生而提出的,容器类在面向对象语言中特别重要,甚至它被认为是早期面向对象语言的基础。在现在几乎所有的面向对象的语言中也都伴随着一个容器集,在C++
    的头像 发表于 01-09 12:57 5027次阅读
    详细剖析<b class='flag-5'>C++</b>的的3种<b class='flag-5'>容器</b>

    C++17 STL标准学习教材电子书免费下载

    C++标准模板STL)。这本书中的例子展示了如何充分的利用STL。不过,作为本书的第1章,我们还是需要了解一下那些比较重要的新语言特性。
    发表于 02-28 08:00 8次下载
    <b class='flag-5'>C</b>++17 <b class='flag-5'>STL</b>标准<b class='flag-5'>库</b>学习教材电子书免费下载

    C++ STL基本概念是什么

    STL,英文全称 standard template library,中文可译为标准模板或者泛型,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如
    的头像 发表于 02-27 15:56 1448次阅读
    <b class='flag-5'>C++</b> <b class='flag-5'>STL</b>基本概念是什么

    C++学习笔记顺序容器

    C++的顺序容器是一种用于存储和管理元素序列的数据结构。它们提供了一组有序的元素,并支持在序列的任意位置插入和删除元素。C++标准中提供
    的头像 发表于 05-11 17:05 671次阅读

    C++入门通用算法

    C++ 是一种强大的编程语言,它提供了许多通用算法,可以用于各种容器类型。这些算法是通过迭代器来操作容器的元素,因此它们是通用的,可以用于不同类型的
    的头像 发表于 05-17 09:40 746次阅读

    C++STL容器的常见容器及基本操作

    一、什么是容器? 所谓容器,就是可以承载,包含元素的一个器件,它是STL六大组件之一,是容器、算法、迭代器中最重要也是最核心的一部分。 二、STL
    的头像 发表于 11-10 11:23 530次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>中</b><b class='flag-5'>STL</b><b class='flag-5'>容器</b><b class='flag-5'>中</b>的常见<b class='flag-5'>容器</b>及基本操作

    STL内容介绍

    1 什么是STLSTL(Standard Template Library),即标准模板,是一个具有工业强度的,高效的C++程序。它
    的头像 发表于 11-13 11:32 965次阅读
    <b class='flag-5'>STL</b>内容介绍