c++疑难点
文章平均质量分 52
的
(ノへ ̄、)。
24届进入嵌入式linux开发的新人
展开
-
哈希表与哈希冲突
数组是无序排放的,我们要查找某个元素但不知道下标的话,只能使用遍历的方法去一个一个查找将一个字符串(key)转化为数组长度范围内的下标值的过程就称作为 哈希化,而实现哈希化的代码一般会封装在一个函数里,这个函数就叫做 哈希函数哈希表通过元素查找到下标,从而快速定位到数据的位置例子:key就是学号101011,value就是张三,我们将学号输入到哈希函数只是为了确定这个value该放在哪个位置而已。问题???要是不同的key经过转换之后生成了相同的哈希值怎么办1、开放地址法对原来的值加上一个随机的数进行原创 2022-10-22 19:31:22 · 82 阅读 · 0 评论 -
STL中重要的概念
仿函数是一个类,里面有成员函数重载()符号,在我们调用实例对象的时候,会自动调用重载函数,这样就像是一个函数一样public:{}最上面的一个实例对象,传入两个参数之后,就会自动调用成员函数重载()重载函数接受一个参数就叫做一元谓词,接受两个参数就叫做二元谓词内建函数在库里面将一封装一些仿函数,我们可以在加入库的头文件之后,就可以像函数一样使用他们。原创 2022-10-22 18:46:15 · 478 阅读 · 0 评论 -
指针的各种关系
指向一个数组的指针,其实就是指向数组的首地址(也就是第一个元素的地址)该指针指向一个存放字符的空间。原创 2022-10-08 21:31:54 · 149 阅读 · 0 评论 -
多态、虚函数表、虚指针、动态绑定
虚函数是整个类所共有的,虚函数表存储在对象内存最开始的位置。当一个类里存在虚函数时,编译器会为类创建一个虚函数表vtable,虚函数表是一个数组,数组的元素存放的是类中虚函数的地址。同一个虚函数,会根据我们调用的指针类型去对应的虚函数表,然后绑定我们需要的虚函数。2、当子类Node继承基类base但是没有将虚函数重写,Node的虚函数表。3、当子类Node覆盖了基类的虚函数,Node的虚函树表。父类被覆盖的函数f(),都被替换为子类的虚函数f()1、基类base里面最初的虚函数表。原创 2022-09-27 15:04:14 · 288 阅读 · 0 评论 -
智能指针的学习
在动态内存管理中是使用delete和new 实现,单是动态内存管理经常会出现两种情况,一种是忘记释放内存,会造成内存泄漏;一种是尚有指针引用内存的情况下释放它,就回生成非法的指针智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。标准库提供的两种智能指针的区别在于管理底层指针的方法不同,shared_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指向的对象。原创 2022-09-26 22:21:04 · 727 阅读 · 0 评论 -
运算符重载
运算符重载为全局函数时,参数的个数等于运算符的目数(即操作数的个数);运算符重载为成员函数时,参数的个数等于运算符的目数减一(因为有成员函数有隐藏的this指针)1、重载的参数个数必须要与运算符原来的参数个数一样,比如+号的参数就是左加数与右加数两个。2、单目:右参数是形参,双目:左边形参作为运算符左操作数,右边形参是右操作数,因为类成员函数默认有一个this指针。我们要实现 a -b,因为this指向a,我们只需要写右参数就可以 写成:int operator-(Time b)原创 2022-09-24 16:47:29 · 292 阅读 · 0 评论 -
c++构造函数
在对象创建的时候都会调用构造函数来初始化构造函数一共有三种,普通构造、拷贝构造分别可以为不同种类的成员赋值,最后一种是移动构造设计运算符重载构造函数的特征:1、构造函数名与类名相同,且无返回值(void也不行)2、在每一个类中都存在有默认的构造函数(系统自行提供),且在实例化对象时都会调用,只是不做任何是事情3、构造函数会在实例化对象时自动调用,不允许显式调用。原创 2022-09-23 21:55:24 · 213 阅读 · 0 评论 -
数组作为函数参数
注意:函数数组作为参树实际上传递的是首元素的地址arr[] 与*arr 是等价的计算数组的长度也是只要传递首元素地址就可以sizeof(arr) 等价于 sizeof(arr[0])原创 2022-09-11 15:02:40 · 330 阅读 · 0 评论 -
unordered_set与unordered_map
将字符通过哈希函数转成数组的下标,然后将字符存放在下标处,这样我们可快速查找到字符,set容器不可以有重复的元素。原创 2022-09-16 11:02:31 · 308 阅读 · 0 评论