- 博客(20)
- 收藏
- 关注
原创 STL之六:泛型算法
有sort、find、find_if、binary_search、for_each。bind1st:把二元函数对象的operator()(a, b)的第一个形参绑定起来。bind2nd:把二元函数对象的operator()(a, b)的第二个形参绑定起来。2)泛型算法的参数还可以接收函数对象(c函数指针)绑定器 + 二元函数对象 =》 一元函数对象。C++提供了许多泛型算法,使用需添加头文件。1)泛型算法的参数接收的都是迭代器。包含了STL所有的泛型算法。
2025-10-30 15:53:50
203
原创 STL之五:函数对象
如果一个类中实现了重载括号()运算符,即operator(),那么这个类的对象就是一个。因为函数对象实现了operator(),所以它就有了类似函数的行为,可以像函数一样来调用它,所以函数对象又称为。
2025-10-30 11:46:54
414
原创 STL之三:关联容器
关联容器通过 键(Key) 高效存储和访问元素,它们的元素位置取决于键值,而非插入顺序。主要分为两类:1.无序关联容器,依赖于链式哈希表,增删查O(1)使用头文件:#include<unordered_set>、#include<unordered_map>set:集合 key map:映射表[key, value](键值对)unordered_set:单重集合unordered_multiset:多重集合unordered_map:单重映射表unordered_multimap:
2025-10-29 20:56:22
404
原创 STL之二:容器适配器
1)适配器底层没有自己的数据结构,它是另外一个容器的封装,它的方法全部由底层依赖的容器进行实现的;2)没有实现自己的迭代器;
2025-10-28 17:27:45
383
原创 STL之一:容器(顺序容器)
size( ):返回底层有效元素的个数empty( ):判断容器是否为空reserve(20):vector预留空间,只给容器底层开辟指定大小的内存空间,并不会添加新的元素resize(20):扩容,不仅给容器底层开辟指定大小的内存空间,还会添加新的元素swap( ):两个容器进行元素交换。
2025-10-28 11:19:14
1349
原创 C++:虚基类和虚继承、多重继承的问题、C++四种类型转换方式
好处:可以做更多代码的复用;坏处:派生类有多份间接基类的数据,这是设计的问题→解决:对间接基类(A)进行继承的类(B、C)都采用虚继承。
2025-10-26 16:48:36
765
原创 C++:多态、抽象类
静态(编译时期)的多态:函数重载、模版(函数模版和类模板)比如:bool compare(int,int){ } 与 bool compare(double,double){ }动态(运行时期)的多态:在继承结构中,,通过该指针(引用)调用同名覆盖方法(虚函数),,称为多态。多态底层是通过动态绑定来实现的,pbase—>访问谁的vfptr—>继续访问谁的vftable—>调用相应的派生类对象的方法。因此,继承的好处是:1)可以做代码的复用;
2025-10-24 15:08:15
307
原创 C++:虚函数、静态绑定和动态绑定、虚析构函数
使用修饰的成员函数,被称为虚函数。1)如果类里面定义了虚函数,那么编译阶段,编译器给这个类类型产生一个唯一的,虚函数表中主要储存的内容是RTTI指针(指向常量,理解为类型字符串)和虚函数的地址。当程序运行时,每一张虚函数表都会加载到内存的.rodata区(只读)。2)一个类里面定义了虚函数,那么这个类定义的对象,其运行是,内存中开始部分,多存储一个,指向相应类型的虚函数表vftable。一个类型定义的n个对象,它们的vfptr指向的都是同一张虚函数表。
2025-10-23 20:22:09
800
原创 C++:迭代器
迭代器()是按照一定的顺序对一个或多个容器中的元素从前往遍历的一种机制,提供一种统一的方式,来透明的访问容器内部的元素的值。有begin() 和 end()的方法,begin()返回容器底层首元素的迭代器的表示,end()返回容器末尾元素后继位置的迭代器的表示。*it获取当前元素++it移动到下一个元素。
2025-10-16 21:10:05
435
原创 C++:const及与指针的结合
int* <= const int* 是错误的!const int* <= int* 是可以的!int** <= const int** 是错误的!const int** <= int** 是错误的!int** <= int* const * 是错误的!
2025-09-23 20:35:47
847
原创 C++:形参带默认值+inline内联函数+函数重载
inline内联函数:在编译过程中,没有函数的调用开销,在函数的调用点直接把函数的代码进行展开处理了。1.一组函数,其中函数名相同,参数列表的个数或者类型不同,那这组函数就称作——函数重载。4.形参给默认值的时候,不管是定义处给,还是声明处给,形参默认值只能出现一次。4.一组函数,函数名相同,参数列表也相同,仅仅是返回值不同,不叫重载。C++调用C代码:把C函数的声明扩在extern "C"里面。C++代码产生函数符号的时候,函数名+参数列表类型组成的!1.C++为什么支持函数重载,C语言不支持函数重载。
2025-09-22 17:52:38
174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅