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

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

3天内不再提示

C++ STL基本概念是什么

汽车电子技术 来源:C语言Plus 作者:Maye426 2023-02-27 15:56 次阅读

STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。

STL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 程序库的重要组成部分。

STL从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。

STL细说六大件:

*– 容器(Container)*

		*– 算法(Algorithm)*

		*– 迭代器(Iterator)*

		*– 仿函数(Function object)*

		*– 适配器(Adaptor)*

		*– 空间配制器(allocator)*

在C++标准中,STL被组织为下面的13个头文 件:、、、、、、、、、、、 和。

说了这么多,使用STL有什么好处呢?

1)STL是C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。

2)STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但是这种分离确实使得STL变得非常通用。

3) 程序员可以不用思考STL具体的实现过程,只要能够熟练使用STL就OK了。这样他们就可以把精力放在程序开发的别的方面。

4) STL具有高可重用性,高性能,高移植性,跨平台的优点。

高可重用性:STL中几乎所有的代码都采用了模板类和模版函数的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。关于模板的知识,已经给大家介绍了。

高性能:如map可以高效地从十万条记录里面查找出指定的记录,因为map是采用红黑树的变体实现的。(红黑树是平横二叉树的一种)

高移植性:如在项目A上用STL编写的模块,可以直接移植到项目B上。

跨平台:如用windows的Visual Studio编写的代码可以在Mac OS的XCode上直接编译。

5) 了解到STL的这些好处,我们知道STL无疑是最值得C++程序员骄傲的一部分。每一个C++程序员都应该好好学习STL。只有能够熟练使用STL的程序员,才是好的C++程序员。

6) 总之:招聘工作中,经常遇到C++程序员对STL不是非常了解。大多是有一个大致的印像,而对于在什么情况下应该使用哪个容器和算法都感到比较茫然。 STL是C++程序员的一项不可或缺的基本技能 ,掌握它对提升C++编程大有裨益。

图片

Alexander Stepanov

容器

一些封装数据结构的模板类,简单来说,就是存储数据的结构

序列式容器:特点是不会对存储的元素进行排序,元素排列的顺序取决于存储它们的顺序。

关联式容器:在存储元素时会为每个元素在配备一个键,整体以键值对的方式存储到容器中,可以通过键值直接找到对应的元素,而无需遍历整个容器。另外,关联式容器在存储元素,默认会根据各元素键值的大小做升序排序。

迭代器

用来遍历容器中的元素的类型, 类中类 (可以理解为指针),扮演着容器和算法之间的胶合剂

算法

解决问题的方法

容器、迭代器、算法分离案例

#include
using namespace std;
//算法:求数组元素个数
int mcount(int* begin, int* end, int arr[])
{
  int num = 0;
  while (begin != end)
  {
    num++;
    begin++;
  }
  return num;
}
int main()
{
  //容器
  int arr[] = { 7,1,2,5,4,7,5 };
  //迭代器
  int* begin = arr;
  int* end = &arr[sizeof(arr) / sizeof(arr[0])];
  cout << mcount(begin, end, arr);


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

    关注

    3

    文章

    3868

    浏览量

    61309
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • STL
    STL
    +关注

    关注

    0

    文章

    85

    浏览量

    18212
收藏 人收藏

    评论

    相关推荐

    C++STL算法(二)

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

    c++STL算法(三)

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

    Proteus涉及的基本概念

    Proteus涉及的基本概念
    发表于 08-01 20:58

    C语言基本概念及语法

    C语言基本概念和语法供初学者研讨
    发表于 08-18 10:32

    Fpga Cpld的基本概念

    Fpga Cpld的基本概念
    发表于 08-20 17:14

    c++经典书籍

    。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。   对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为
    发表于 10-24 21:06

    C语言基本概念

    C语言基本概念
    发表于 08-01 02:00

    阻抗控制相关的基本概念

    阻抗控制部分包括两部分内容:基本概念及阻抗匹配。本篇主要介绍阻抗控制相关的一些基本概念
    发表于 02-25 08:11

    智能天线的基本概念

    1智能天线的基本概念 智能天线综合了自适应天线和阵列天线的优点,以自适应信号处理算法为基础,并引入了人工智能的处理方法。智能天线不再是一个简单的单元,它已成为一个具有智能的系统。其具体定义为:智能
    发表于 08-05 08:30

    CODESYS的基本概念有哪些

    CODESYS是什么?CODESYS的基本概念有哪些?CODESYS有哪些功能?
    发表于 09-18 06:52

    STM32的中断系统基本概念

    STM32 中断系统概述笔记(一)中断概述中断相关的基本概念STM32的中断系统基本概念:NVIC 嵌套向量中断控制器中断通道中断优先级优先级分组EXTI 外部中断控制器三种外部中断触发方式引脚分组
    发表于 01-07 07:32

    C++ STL概念及举例

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

    STL的概述

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

    C++STL库中的容器

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

    STL内容介绍

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