美文网首页
21 STL(一)一一初识

21 STL(一)一一初识

作者: ca8519be679b | 来源:发表于2021-01-03 21:53 被阅读0次

长久以来,软件界一直希望解决重复使用的代码,将复用性提高,

面向对象和泛型思想就是复用性提高的一种操作,

为了提供数据结构和算法的一套标准(防止重复造轮子),就有了STL(标准模板库)

STL广义上分为容器Container,算法Algorithm,迭代器Iterator

容器和算法之间通过迭代器无缝连接,

STL中几乎所有部分都用了类模板或者模板函数

STL的六大组件,容器,算法,迭代器,仿函数,适配器(配接器),空间配置器

1

如上,可以看到对六大组件的功能描述介绍,其中仿函数就是我们之前说过的重载小括号的类,行为类似函数的调用。

容器,将最广泛的数据结构实现出来,如数组,链表,树,栈,队列,集合,映射表

如上容器可分为2种,一种叫做序列型容器,强调元素的固定位置,一种是关联性容器,元素间没有严格的顺序关系

算法,就是解决问题的设计,算法分为质变算法和非质变算法,是按照元素的内容是否变化来算,如拷贝删除排序是质变,查找求极值等是非质变算法

迭代器,算法通过迭代器来遍历容器,不同的容器有不同的迭代器

2

迭代器分为如上的5种,实际经常使用的迭代器为后两个,即双向迭代器和随机访问迭代器,

容器简介

STL最常用的容器就是Vector,也叫数组,算法for_each,迭代器vector<T>::iterator

我们之前尝试过去自定义个array类型,这里vector可以存放特定类型,使用<>模板来指定类型,

3

如上,我们使用vector,要include导入,使用pust_back可以实现尾插。接下来就需要我们显示了,其实也涉及到迭代的过程,就是遍历,

4

如上,使用vector<int>::iterator迭代器来迭代,通过v的begin和end方法返回指针,注意,这里指针begin是指向第一个元素,而end是指向最后一个元素的后面,即不是实体元素,这样,我们就可以通过指针遍历,解引用来实现输出数组元素。上面是第一种while循环

5

第二种是使用for循环,也很好理解,还有一种for_each方法

6

如上,我们使用for_each要导入algorithm库,其中需要传入3个参数,前两个分别是头尾指针,最后传入的是个方法名,这个方法要额外定义,这里我们需要明确的是方法遍历的是vector的每一个元素,因此要有对应得参数int val,效果如上

7

我们可以查看for_each的内容,里面本质还是for循环然后每个元素去调用方法

同样,我们还可以给vector使用自定义数据类型

8

使用嵌套容器

嵌套容器就像二维数组一样,我们要使用2层for循环访问,我们如下示范下

9

如上,我们要使用2层for循环,我们使用迭代器遍历,我们知道,迭代器<>里面的类型是对象,it就是个vector<int>的指针,需要解引用获得对象,然后再次遍历,如上的逻辑,将嵌套的容器进行输出

相关文章

  • 21 STL(一)一一初识

    长久以来,软件界一直希望解决重复使用的代码,将复用性提高, 面向对象和泛型思想就是复用性提高的一种操作, 为了提供...

  • C++ STL编程

    一、STL简介 1.1 初识STL STL(Standard Template Library,即标准模版库)是一...

  • 初识一一

    2022年1月1日20:20分 新年的第一天。 大海發了一條朋友圈。 你在流浪,而他在陽台遇見你,不知道該喂剛滿月...

  • C++第14天: 第171-第174课 模板

    模板函数与普通函数的区别。 初识stl,标准模板库,包括 容器,算法,迭代器,仿函数,适配器,置配器。 认识deq...

  • stl简介

    stl stl简介 1. 什么是STL? STL(Standard Template Library),封装基本数...

  • Boolan - C++学习笔记 _STL - 第一周

    STL与泛型编程 一、STL是什么 STL(Standard TemplateLibrary),即标准模板...

  • C++基础一文通(六)STL

    一. STL 标准模板库 STL(Standard Template Library,标准模板库) STL 从广义...

  • C++ STL初识及整理

    概述 简介 简单介绍:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些...

  • GEEKBAND BOOLAN STL第一周

    STL与泛型编程 一、STL是什么 STL(Standard TemplateLibrary),即标准模板库,是一...

  • stl

    STL(标准模板库)基本概念 一、什么是STL STL(Standard Template Library,标准模...

网友评论

      本文标题:21 STL(一)一一初识

      本文链接:https://www.haomeiwen.com/subject/yrmpoktx.html