C++STL
文章平均质量分 94
本专栏专门用于介绍C++STL的基本知识
掘根
须知少时凌云志,曾许人间第一流
展开
-
C++function
例如,每个lambda 有它自己唯一的(未命名)类类型;函数及函数指针的类型则由其返回值类型和实参类型决定,等等。是一个函数类型,它接受两个int、返回一个int。原创 2024-05-05 14:07:58 · 1186 阅读 · 7 评论 -
C++关联容器2——map,multimap,set,multiset基本操作
下面是一个使用。原创 2024-05-04 11:54:26 · 1066 阅读 · 7 评论 -
C++关联容器1——map,multimap,set,multiset介绍,pair类型
关联容器(有序的和无序的)都支持中介绍的普通容器操作。关联容器不支持顺序容器的位置相关的操作,例如push_front或pushback。原因是关联容器中元素是根据关键字存储的,这些操作对关联容器没有意义。而且,关联容器也不支持构造函数或插入操作这些接受一个元素值和一个数量值的操作。除了与顺序容器相同的操作之外,关联容器还支持一些顺序容器不支持的操作和类型别名。此外,无序容器还提供一些用来调整哈希性能的操作。关联容器的迭代器都是双向的。当定义一个map时,必须既指明关键字类型又指明值类型;原创 2024-05-04 10:05:42 · 1577 阅读 · 1 评论 -
标准库bind函数
我们可以解决向check_size 传递一个长度参数的问题,方法是使用一个新的名为bind的标准库函数,它定义在头文件functional中。可以将bind函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。调用bind的一般形式为:其中,newCallable本身是一个可调用对象,arg_list 是一个逗号分隔的参数列表,对应给定的callable的参数。即,当我们调用newCallable时,newCallable 会调用callable,并传递原创 2024-05-04 08:34:47 · 773 阅读 · 1 评论 -
C++泛型算法2——谓词,lambda表达式
一个lambda 表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。与任何函数类似,一个lambda 具有一个返回类型、一个参数列表和一个函数体。但与函数不同,lambda可能定义在函数内部。一个lambda表达式具有如下形式其中,capture_list(捕获列表)是一个lambda所在函数中定义的局部变量的列表(通常为空);return type、parameter list和 function body与任何普通函数一样,分别表示返回类型、参数列表和函数体。原创 2024-05-03 23:03:25 · 1342 阅读 · 7 评论 -
C++泛型算法1——初识泛型算法
大多数算法都定义在头文件algorithm 中。标准库还在头文件 numeric中定义了以组数值泛型算法。一般情况下,这些算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围来进行操作。通常情况下,算法遍历范围,对其中每个元素进行一些处理。例如,假定我们有一个int的vector,希望知道vector中是否包含一个特定值。//我们将查找的值//如果在vec中找到想要的元素,则返回结果指向它,否则返回结果为vec.cend()//报告结果。原创 2024-05-03 17:11:05 · 943 阅读 · 23 评论 -
C++顺序容器4——vector 对象是如何增长的
为了避免这种代价,标准库实现者采用了可以减少容器空间重新分配次数的策略。当不得不获取新的内存空间时。原创 2024-05-03 15:16:55 · 869 阅读 · 8 评论 -
C++顺序容器3——容器适配器
每个适配器都定义两个构造函数:默认构造函数创建一个空对象,接受一个容器的构造函数拷贝该容器来初始化适配器。//从deq拷贝元素到stk默认情况下,stack和queue是基于deque实现的,priority_queue是在vector之上实现的。我们可以在创建一个适配器时将一个命名的顺序容器作为第二个类型参数,来重载默认容器类型。// 在vector上实现的空栈//str_stk2在vector上实现,初始化时保存svec的拷贝对于一个给定的适配器,可以使用哪些容器是有限制的。原创 2024-05-03 12:37:27 · 683 阅读 · 0 评论 -
C++顺序容器2——顺序容器特有操作
迭代器指出了在容器中什么位置放置新元素。它可以指向容器中任何位置,包括容器尾部之后的下一个位置。由于迭代器可能指向容器尾部之后不存在的元素的位置,而且在容器开始位置插入元素是很有用的功能,原创 2024-05-03 11:43:30 · 1076 阅读 · 0 评论 -
C++顺序容器1——顺序容器的介绍和选择
下表列出了标准库中的顺序容器,所有顺序容器都提供了快速顺序访问元素的能力。但是,这些容器在以下方面都有不同的性能折中:向容器添加或从容器中删除元素的代价非顺序访问容器中元素的代价表9.1:顺序容器类型顺序容器类型vector可变大小数组。支持快速随机访间。在尾部之外的位置插入或删除元素可能很慢deque双端队列。支持快速随机访问。在头尾位置插入/删除速度很快list双向链表。只支持双向顺序访问。在list 中任何位置进行插入/删除操作速度都很快单向链表。只支持单向顺序访问。原创 2024-05-02 21:04:15 · 806 阅读 · 0 评论 -
C++string类使用大全
我们看个例子。原创 2024-05-02 14:46:22 · 844 阅读 · 0 评论 -
C++vector容器
和任何一种类类型一样,vector 模板控制着定义和初始化向量的方法。下面列出了定义vector对象的常用方法。//v1 是一个空vector,它潜在的元素是T类型的,执行默认初始化//v2中包含有v1所有元素的副本(注意是副本)//等价于v2(v1),v2中包含有v1所有元素的副本(注意是副本)//v3包含了n个重复的元素,每个元素的值都是val// v4包含了n个重复地执行了值初始化的对象//v5包含了初始值个数的元素,每个元素被赋予相应的初始值//等价于v5{a,b,c...}原创 2024-05-02 10:53:35 · 8 阅读 · 0 评论 -
C++容器库概览
即,deque定义在头文件deque中,list定义在头文件list中,以此类推。原创 2024-05-02 21:39:37 · 609 阅读 · 0 评论 -
掘根宝典之C++迭代器简介
迭代器是一种用于遍历容器元素的对象。它提供了一种统一的访问方式,使程序员可以对容器中的元素进行逐个访问和操作,而不需要了解容器的内部实现细节。C++标准库里每个容器都定义了迭代器迭代器的作用类似于指针,可以指向容器中的某个元素,并通过操作迭代器来访问和操作该元素。通过迭代器,我们可以实现对容器的遍历、查找、修改等操作,大大增强了程序的灵活性和通用性。原创 2024-03-12 18:35:33 · 1302 阅读 · 0 评论 -
掘根宝典之C++正向迭代器和反向迭代器详解
我们可以看个例子。原创 2024-03-15 22:07:23 · 1187 阅读 · 0 评论