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

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

3天内不再提示

什么是STL?

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

大家好,我是情报小哥~

**1、什么是STL **

STL库英文名叫standard template library,标准模板库,并且它属于标准库的一部分,前面小哥跟大家讲解模板的相关知识就是为其进行铺垫的。

STL主要是由一些模板函数和模板类构成的,其包含了C++程序开发中一些非常通用的数据结构实现与算法封装,从而达到了非常良好的软件复用和扩展能力,当然其背后带来的是应用程序开发的高效,你不用再去徒手编辑各种数据结构和算法来使用,其实现的高效和稳定也减少了程序bug。

而对于C语言而言目前暂时没有这样的库,大部分都是各大厂家整理的,或者是一些大牛自己开源的等等,这样就难以形成一个比较好的标准,不太便于程序员代码之间的交流和软件的复用。

STL库既然是一个库就跟标准库一样,如果你觉得方便,或者有这块需求,直接白嫖,如果你觉得STL实现得不够好,或者需改良,也可以自己来编写。

**2、STL的组成 **

对于STL主要分为如下6大组件 :

图片

下面小哥简单的介绍每个组件:

**容器 : **是一些用于存储数据的数据结构,比如链表、队列、栈等等,大部分都是类模板。

**算法 : **也就是我们平时提到的各种算法,比如排序,查找等等,大部分都是一些函数模板,

**迭代器 : **名字看起来比较高大上,其实可以认为它就是一个“智能指针”,用于遍历容器,所以每种容器都有自己的迭代器用来遍历。

**分配器 : **主要是用于辅助容器分配和管理空间。

**仿函数 : ** 主要是与算法结合,因函数指针无法满足C++抽象需求,通过重载操作符(),来实现类似函数调用的过程。

**适配器 : **其名称就可以看出,主要是用于接口的相互转换,从而协调多种端口,容器、仿函数、迭代器都可以与适配器结合,类比电源适配器进行电压转换。

那么下面小哥简单的通过一个图来描述这6大组件之间的关联,以便大家更好的理解。

图片

分配器为容器分配数据空间,而迭代器就是为了遍历容器,算法通过迭代器来访问容器,仿函数使得算法更加的灵活,而这些适配器可以为外界提供新的接口。

**3、STL的容器的使用体验 **

这里通过一个简单的容器操作来体验一下最基础的STL使用:

参考例子:

1#include
2#include
3#include //向量(与数组类似)
4#include //队列
5
6using namespace std;
7
8int main(int argc, char *argv[])
9{
10 //1、向量容器
11 vector vr(5); //通过vertor容器类模板定义一个int类型的向量vr
12
13 cout<<" vr size: "<14
15 for(int Index = 0; Index < vr.size(); Index++)
16 {
17 vr[Index] = Index + 1; //直接以数组方式访问即可
18 cout<<" vr["<"]"<19 }
20
21 //2、队列容器适配器(FIFO--即先进先出)
22 queue qf; //通过queue类模板创建一个队列
23
24 for(int cnt = 0 ;cnt < 5;cnt++)
25 {
26 qf.push((float)cnt+0.1); //进行入队操作
27 cout<<" Queue IN : "<<(float)cnt+0.1<//获得端口数据
28 }
29
30 while(!qf.empty())
31 {
32 cout<<" Queue Out: "<//获得端口数据
33 qf.pop();//进行出队操作
34 }
35
36 return EXIT_SUCCESS;
37}

运行结果:

图片

只需要包含相应的头文件即可使用相应的模板来供应用程序使用,比如例子中使用的队列等,不需要我们像C语言那样再徒手编写队列了,简直不要再方便了~

当然STL库远比上面复杂得多,后面小哥还会为大家慢慢道来~

**最 后 **

这里小哥就介绍了C++中白嫖STL库。本系列文章还会持续更新,以最通俗易懂的方式跟大家谈谈C++,期待您的关注与支持~

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

    关注

    3

    文章

    4327

    浏览量

    62573
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73621
  • STL
    STL
    +关注

    关注

    0

    文章

    86

    浏览量

    18319
收藏 人收藏

    评论

    相关推荐

    c++之STL算法(三)

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

    X-CUBE-STL与ARM的STL的区别是什么?

    大家好,我正在做一些关于 STL 的研究。STM 的 X-CUBE-STL 产品与 ARM STL 库有何不同?你为什么要用一个而不是另一个?
    发表于 12-02 07:18

    effective stl中文版下载pdf

    导读你已经熟悉了STL。你知道怎么建立容器,迭代它们的内容,添加删除元素和应用常见算法,比如find和sort。但你并不满足,你不能摆脱STL所提供的超过它们能带来的好处
    发表于 08-25 17:47 0次下载

    C++ STL的概念及举例

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

    STEP7 STL语句表编程使用手册

    本手册是用STL语句表编程语言编制用户程序的用户指南。 本手册也包括描述STL语言元素的语法和功能的参考章节
    发表于 03-10 16:05 197次下载
    STEP7 <b class='flag-5'>STL</b>语句表编程使用手册

    STL算法在GIS中的应用

    使用STL 算法实现GIS 算法可以保证它的简洁和高效该文结合C++代码实例抽象出了地理算子的概念应用在GIS 算法当中通过定制适配器来消除地理算子和STL 算法之间的不匹配同时拓展了ST
    发表于 06-28 16:55 33次下载

    数据结构与STL

    学习数据结构与STL的一些资料,新手可以慢慢看。
    发表于 12-22 14:41 0次下载

    基于STL曲面网格重建算法

    STL(stereo lithography)作为3D扫描数据和快速原型制造事实上的标准,广泛应用于娱乐、制造业和Internet等领域.随着3D模型越来越复杂,数据量越来越庞大,从STL文件难以
    发表于 12-25 11:52 1次下载
    基于<b class='flag-5'>STL</b>曲面网格重建算法

    S7-STL中文编程手册

    S7-STL中文编程手册免费下载。
    发表于 04-23 11:48 28次下载

    stl-thumb STL缩略图生成器

    ./oschina_soft/stl-thumb.zip
    发表于 05-30 09:46 57次下载
    <b class='flag-5'>stl</b>-thumb <b class='flag-5'>STL</b>缩略图生成器

    STL的概述

    C++ STL 是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法,关于 STL 呢,下面通过一个系统框图来对其进行一个总结
    的头像 发表于 01-20 17:08 1379次阅读
    <b class='flag-5'>STL</b>的概述

    C++之STL库中的容器

    前面跟大家介绍过STL库,STL主要是由6大部分组成,其中第一个提到的就是容器,容器在介绍STL中小哥有简单的跟大家介绍过,今天稍微再详细介绍一下
    的头像 发表于 02-21 10:55 1204次阅读
    C++之<b class='flag-5'>STL</b>库中的容器

    博途使用STL中的MOVE指令

    现在,在 S7-1500 CPU 上可使用 STL 中的 MOVE 指令进行编程。
    的头像 发表于 06-06 11:10 6568次阅读
    博途使用<b class='flag-5'>STL</b>中的MOVE指令

    使用STL函数控制传送带

    要创建 STL 函数块“STL-Conveyor”,请按以下步骤操作
    的头像 发表于 10-12 16:00 611次阅读
    使用<b class='flag-5'>STL</b>函数控制传送带

    STL内容介绍

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