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

    文章

    4345

    浏览量

    62952
  • C++
    C++
    +关注

    关注

    22

    文章

    2114

    浏览量

    73840
  • STL
    STL
    +关注

    关注

    0

    文章

    86

    浏览量

    18378
收藏 人收藏

    评论

    相关推荐

    C++STL算法(二)

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

    c++STL算法(三)

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

    C语言基本概念及语法

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

    c++经典书籍

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

    C语言基本概念

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

    C++ STL概念及举例

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

    STL算法在GIS中的应用

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

    C++C/C++程序设计教程_C/C++概述

    C++基础知识,简要介绍了C++的一些简单知识,概念,函数
    发表于 12-25 10:15 0次下载

    C++课程资料详细资料合集包括了:面向对象程序设计与C++,算法,函数等

    ,循环,多态性,数组,模板,习题,STL编程,预处理,指针,结构体,位运算,文件,常见错误,c++模板使用疑问等
    发表于 07-09 08:00 18次下载
    <b class='flag-5'>C++</b>课程资料详细资料合集包括了:面向对象程序设计与<b class='flag-5'>C++</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>标准库学习教材电子书免费下载

    STL的概述

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

    C++STL库中的容器

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

    线程池基本概念与原理

    一、线程池基本概念与原理 1.1 线程池概念及优势 C++线程池简介 线程池是一种并发编程技术,它能有效地管理并发的线程、减少资源占用和提高程序的性能。C++线程池通过库,结合
    的头像 发表于 11-10 10:24 576次阅读

    STL内容介绍

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

    C语言的基本概念和编程技术

    电子发烧友网站提供《C语言的基本概念和编程技术.pdf》资料免费下载
    发表于 11-20 10:18 0次下载
    <b class='flag-5'>C</b>语言的<b class='flag-5'>基本概念</b>和编程技术