3.泛型编程
文章平均质量分 77
泛型编程部分将介绍模板、STL的知识。
123_YQH
努力不秃头!
展开
-
9.1顺序容器概述
顺序容器概述一个容器就是一些特定类型对象的集合。1.顺序容器类型vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢deque 双端队列。支持快速随机访问。在头尾位置插入/删除很快list 双向链表。只支持双向顺序访问。在list表任何位置插入/删除操作速度都很快。forward_list 单向链表。支持支单向随机访问。在链表任何位置插入/删除操作速度都很快。array原创 2021-10-15 22:38:48 · 216 阅读 · 0 评论 -
9.2容器库操作
容器库概述1.容器操作所有容器都提供的操作如下:类型别名iterator 此容器类型的迭代器类型const_iterator 可以读取元素,但是不能修改元素的迭代器类型size_type 无符号整数类型,足够保存此种容器类型最大可能容器的大小value_type 元素类型reference 元素的左值类型;于value_type含义相同const_reference 元素的cons原创 2021-10-18 22:48:02 · 145 阅读 · 0 评论 -
9.3顺序容器操作
顺序容器操作上一节主要讲了所有容器都支持的操作:主要是初始化、赋值、迭代器和swap。本节将介绍顺序容器特有的操作。1.向顺序容器添加元素除array外,向顺序容器添加元素的操作如下表:这些操作会改变容器的大小;array不支持这些操作。forward_list有自己版本的insert和emplace,且不支持push_back和emplace_backvector和string不支持push_front和emplace_frontc.push_back(t) 在c的尾部原创 2021-10-20 11:21:10 · 166 阅读 · 0 评论 -
9.4vector对象是如何增长的
vector对象是如何增长的为了支持快速随机访问,vector元素类似数组一样是连续存储的。但是与数组不同,vector或string的容器大小是可变的。因此,vector和string当没有空间容纳新元素时,将已有元素从旧位置移动到新空间中(通过右值引用实现),然后添加新元素,释放旧存储空间。但如果我们每添加一个新元素就执行一次这样的内存分配和释放,性能会很慢,因此,当不得不获取新的内存空间时,vector和string的实现通常会分配比新的空间需求更大的内存空间。1.管理容器的成员函数vector原创 2021-10-20 15:30:55 · 139 阅读 · 0 评论 -
10.1泛型容器概述
泛型算法概述标准库容器定义的操作集合相当的少,顺序容器只定义了添加/删除、查找元素、访问首尾元素、确定容器是否为空和获得首尾迭代器的操作。而像其他很多有用的操作如:查找特定元素、替换或删除特定值、重排元素顺序等,标准库并未给容器定义成员函数实现这些操作,而是定义了一组泛型算法,可以用于不同类型的元素和多种容器类型。①算法不直接操作容器而是遍历由两个迭代器指定的一个元素范围来进行操作大多数算法定义在头文件algorithm中,通常情况下,算法遍历迭代器指定的范围,对其中的一个元素进行处理。如:有一个原创 2021-10-21 21:44:20 · 237 阅读 · 0 评论 -
10.2初始泛型算法
初识泛型算法标准库提供了100多个算法,幸运的是这些算法都有一致的结构。除了少数例外外,这些算法都对一个范围内的元素进行操作,我们将此元素范围称为输入范围,接受输入范围的算法总是使用前两个参数来表示此范围。虽然大多数算法遍历输入范围的方式相似,但使用范围中的元素的方式不同。1.只读算法①find函数:find函数作用是在一个未排序的元素序列中查找给定值是否在所给范围内。find函数参数:find(iter1, iter2, val)。其中iter1和iter2表示一个元素范围的迭代器,第三个原创 2021-10-22 16:12:45 · 129 阅读 · 0 评论 -
10.3lambda表达式
定制操作很多算法都会比较输入序列中的元素。默认情况下,这类算法使用元素类型的<或==运算符进行比较。如sort算法默认使用元素类型的<运算符进行升序排列。但是我们希望的排序顺序与<所定义的顺序不同,或者我们的序列可能保存的是未定义的<运算符的元素类型(如Sales_data)。这两种情况下都需要重载sort的默认行为,使用这些算法的额外版本,允许我们提供自己定义的比较运算符来代替默认运算符。1.向算法传递函数想要使用重载版本的算法来代替算法的默认形式,则需要向算法传递一个叫谓原创 2021-10-24 17:59:53 · 113 阅读 · 0 评论