自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 哈希的应用:位图的介绍、简单模拟实现以及位图经典算法

set的功能:是将存在的无符号整型数据(实际是整型数组二进制位的下标)对应的比特位的值改为1,即该无符号整型是存在的状态。(注意:从上面库里面提供的example代码可以看出库里面的set,reset,test接口的pos的起始位置都是最右边)test的功能:检查无符号整型存不存在即判断无符号整型(位图的下标)对应的二进制位的值是1还是0,是1的话说明存在;位图的概念:用每一位来来存放某种状态,适应于海量数据,数据无重复的场景。数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一。

2024-05-19 23:59:05 639

原创 【哈希】利用相比于闭散列插入数据时的空间利用率和搜索数据时效率较高的开散列(哈希碰撞的解决方法)进行哈希表的简单模拟实现

开散列是解决哈希冲突的一种方法,用该方法实现的哈希表比闭散列实现的哈希表在搜索,查找,删除数据方面的效率和插入数据的空间利用率方面都胜一筹。哈希桶是一种常用的数据结构,用于解决哈希冲突的问题。在哈希表中,每个键值对被映射到一个特定的桶中,而哈希桶就是这些桶的集合。当多个键值对被映射到同一个桶时,就会发生哈希冲突。哈希冲突是指不同的键值对经过哈希函数计算后得到相同的哈希值,导致它们被映射到同一个桶中。解决哈希冲突的方法有很多种,其中一种常见的方法就是使用哈希桶。

2024-05-16 23:09:42 836 1

原创 C++11中新增的一种函数对象:lambda表达式

在学习lambda表达式之前我们先里看一下函数对象是什么,以及它们之间的关系。

2024-05-15 23:40:42 1151

原创 【C++】可变参数模板简单介绍

可变参数模板是C++11中的新特性,它能够让我们创建可以接收可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数是一个巨大的改进,通过系统系统推演数据的类型,不用自己写出模板参数类型。声明一个参数包Args... args,这个参数包中可以包含0到任意个模板参数。上面代码中Args是一个模板参数包,args是一个函数形参参数包。

2024-05-13 23:39:47 597

原创 unordered系列关联式容器底层哈希结构的介绍,哈希表的模拟实现(哈希冲突的解决方法采用闭散列线性探测)

unordered系列关联式容器之所以处理数据的效率比较高,是因为底层使用了哈希结构,哈希结构的优点是:不经过任何比较,一次直接从表中得到要搜索的元素,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。

2024-05-12 23:57:26 1090

原创 详细版 RAII技术的应用之智能指针(智能指针发展历程和简单模拟实现介绍)

智能指针是RAII技术的应用。RAII)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:first:不需要显式地释放资源。second:采用这种方式,对象所需的资源在其生命期内始终保持有效。

2024-05-10 23:05:53 1555

原创 C++中的特殊类设计看完秒懂!

在某种特定的场景下一般的类可能不会满足程序的需求,因此就出现了特殊类。

2024-05-09 00:36:23 713 2

原创 基于C语言中的类型转换,C++标准创造出了更加可视化的类型转换

在C语言中,如果赋值运算符左右两侧的类型不同,或者型参与实参类型同,或者返回值类型与接收返回值类型不同,这几种情况都会发生类型转换。但是C语言的类型转换是由缺陷的,比如:转换的可视性比较差,转换书写的形式单一没有对类型之间的转换进行区别。基于以上原因,C++增添了四种强制类型转换操作符,目的是为了增加类型转换的可视化性。首先我们先来看一下C语言中的类型转换。

2024-05-08 12:51:56 976 2

原创 C/C++中常见的内存泄露的分类以及如何避免它

内存泄漏是一种影响程序和计算机性能的严重问题,因此了解内存泄漏的分类和如何避免它对于我们来说是非常重要的。内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。int a, b;throw "除0错误";Division();//如果b==0抛异常之后程序就会跳到下面的catch处,这样a指向堆的空间就无法//释放,造成内存泄漏delete a;

2024-05-06 22:45:33 644

原创 VS中一些实用的调试技巧(本博文以Visual Studio 2019为例)

当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。这个找问题的过程叫称为调试,英文叫debug(消灭bug)的意思。调试⼀个程序,首先是承认出现了问题,然后通过各种⼿段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产生的原因,再修复代码,重新测试。

2024-05-05 23:11:58 978 1

原创 C++11标准中新增的一些语法特性(上)

相比于C++98标准和C++03标准,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言, C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以学习C++11标准中的新增的语法特性是很有很有必要的。

2024-05-01 23:56:41 930 2

原创 C++|树型结构的关联式容器map

map容器是一个树型结构的关联式容器,它按照特定的次序按照key来比较存储由键值key和值value组合而成的元素(pair类型的对象),使用平衡搜索树(即红黑树)作为其底层,容器中的元素是一个有序的序列。在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容,键值key和值value的类型可能不同,并且在map的内部元素总是按照键值key进行比较排序的。

2024-04-29 23:21:57 991

原创 相比于序列式容器数据检索时效率更高的关联式容器set

set容器是关联式容器其底层是由二叉搜索树实现的,关联式也是用来存储数据的,与序列式容器(比如vector、list、deque等)不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高,因此对于我们来说学习set容器是很有必要的。

2024-04-29 17:01:42 882 4

原创 C++中产生临时变量的常见场景总结与建议

临时变量在C++编程中扮演着重要的角色,它们不仅可以提高代码的效率和可读性,还能够帮助程序员更好地管理内存和处理数据。通过深入了解临时变量的特性和正确地使用方法,可以写出高效、健壮且易于维护的C++代码。

2024-04-27 15:58:30 946 2

原创 二叉搜索树的简单模拟实现

二叉搜索树在C++学习中扮演着重要的角色。通过学习和实现二叉搜索树可以提高我们一下三种能力:数据结构与算法,掌握递归和迭代,提升问题解决能力,因此,学习二叉搜索树对于深入理解C++编程以及数据结构与算法都具有重要意义,能够为你的编程之路打下坚实的基础。

2024-04-24 23:16:03 557 4

原创 C++中拷贝对象时的一些编译器优化和建议

在传参和传返回值的过程中,一般编译器会做一些优化,以此来减少对象的拷贝,这个在一些场景下还是比较有用的,这种优化可以在一定程度上提高程序运行的效率。

2024-04-23 18:24:11 1288 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除