自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++14 新特性:更加简洁和高效的编程体验

C++14在C++11基础上进行了优化改进,主要包括:1) Lambda表达式增强,支持泛型捕获和返回类型自动推导;2) 引入decltype(auto)实现更精确的类型推导;3) 新增std::make_unique函数模板简化智能指针创建;4) 支持二进制字面量表示;5) 提供std::shared_timed_mutex等新同步工具;6) 扩展constexpr功能支持更复杂的编译时计算。这些改进使C++代码编写更加简洁高效,尤其对泛型编程、并发控制和内存管理等场景提供了更好的支持,同时保持了与C++

2025-11-02 19:26:19 1009

原创 从了解到手撕:C++ 标准库利器 std::pair 全方位指南

场景:当一个函数需要两个返回值怎么办?传统做法:自定义一个结构体,修改函数的返回值为或者提供一个输出型参数,但是这样会影响代码的可读性,显得很笨重std::pair的优雅之处:提供了一个轻量级、标准化的解决方案,无需额外定义结构体即可方便地组合和传递两个值。最典型的应用就是在std::map中作为键值对的存储单元。我们来看一下cplusplus对pair的介绍介绍中说“这个类把一对值耦合在一起,它们可能是不同的类型,各自的值可以通过公有成员first和second访问”,pair是tuple。

2025-11-02 18:24:39 574

原创 C++11新特性学习

C++11新特性摘要: C++11标准引入了多项现代化特性,包括:1)列表初始化统一了对象初始化方式,支持std::initializer_list;2)右值引用与移动语义通过std::move减少深拷贝,提升效率;3)完美转发结合引用折叠保持参数属性;4)可变参数模板支持灵活的参数包处理,如sizeof...计算参数数量及递归解析;5)emplace系列接口允许容器内直接构造对象,优化性能。此外,新增了constexpr、auto类型推导等功能,显著提升了代码简洁性和运行效率。

2025-11-02 18:23:55 1156

原创 【题解】LeetCode 433. 最小基因变化

本文介绍了 LeetCode 433 题「最小基因变化」的解题思路。题目要求将起始基因序列 start 通过最少次数的单字符变化转换为目标序列 end,每次变化结果必须在基因库 bank 中。文章通过将问题转化为图的最短路径问题,提出使用 BFS 算法解决。初始方案通过哈希表存储基因库,但时间复杂度较高;改进方案通过直接生成可能的基因变体并检查是否在库中,显著提升效率。文章还指出类似题目(如 127.单词接龙)的解法优化思路。最终代码实现展示了两种方法,并分析了性能差异。

2025-11-01 18:24:45 970

原创 【题解】LeetCode LCR 114. 火星词典

这篇题解介绍了如何解决LeetCode LCR 114火星词典问题。通过分析给定的字符串列表,建立字符间的有向图关系,并利用拓扑排序确定字母顺序。解题步骤包括构建图结构、统计入度、使用BFS进行拓扑排序,并检查是否存在环。最终返回合法字母顺序或空字符串。代码实现使用了哈希表和队列高效处理这些操作。

2025-11-01 18:24:35 827

原创 从bitmap到布隆过滤器——海量数据处理的基石

本文介绍了从bitmap到布隆过滤器的演进,重点分析了布隆过滤器的原理与实现。bitmap存在数据稀疏和非整数型数据处理的局限性,而布隆过滤器通过多个哈希函数将任意类型数据映射到位图中,解决了这些问题,但会带来一定的误判率。文章详细推导了误判率公式,并给出最优哈希函数个数的计算方法。最后,作者用C++实现了布隆过滤器,包含三个不同的哈希函数和误判率计算功能,通过测试验证了其有效性。布隆过滤器是处理海量数据的重要工具,在节省空间的同时支持任意数据类型,但需注意其存在误判的特性。

2025-10-31 11:58:34 1020

原创 带你从了解到掌握位图

概念:位图是一种利用二进制位来表示特定元素状态的数据结构,每一位对应一个元素,可以表示两种状态。优点:从概念我们可以得知,这个数据结构是操作二进制位来设置状态的,所以和它相关的操作都是位运算。计算机底层就是使用二进制进行运算的,这也是他效率会比较高的原因之一,但是它最大的优势在于节省空间,int所占的字节数在我们常用的开发环境中一般是4个字节,也就是32个比特位,使用位图的话,那么一个int就可以表示32个数据的状态。这对比传统的存储方式是不是相当高效和节省空间了?

2025-10-31 11:58:14 24

原创 Linux 命令速查宝典:从入门到高效操作

核心概念:Linux 是一套开源的、免费的、多用户、多任务的操作系统。与 Windows 的区别:与 Windows 这种“一体化”操作系统不同,Linux 更像是一个“乐高”积木,其核心是 Linux 内核(Kernel),而我们日常使用的发行版(如 Ubuntu、CentOS、Red Hat)则是在内核之上,打包了各种工具、库和桌面环境,形成一个完整的操作系统。它无处不在:从你的 Android 手机到服务器集群,从超级计算机到物联网设备,Linux 都在背后默默运行,支撑着我们数字世界的运转。

2025-09-05 14:12:12 910

原创 手把手带你实现一个智能指针

在上一篇文章中,我带大家了解了智能指针的历史以及一些常用用法,但是如果我们仅仅只是会用并不够,如果不了解原理,在使用时就会出现各种错误,无法得知错误背后的原理是什么,接下来让我们以shared_ptr为例,来实现一个自己的智能指针吧。

2025-09-05 11:05:18 395

原创 C++智能指针

在C/C++中,最令人头疼的莫过于内存问题了。在早期的C++中,开发者主要使用管理动态内存,但是如果没有良好的编程习惯或者忘记释放,很容易就会造成,但它我们对平时编写的程序来说并不是一个很大的问题,因为我们的程序运行时间很短,即使内存泄漏了也没关系,但是对于一些应用来说,它们运行起来是不会停止的,除非有特殊情况需要进行维护。在这种情况下如果出现了内存泄漏的问题可是非常危险的,系统资源耗尽时,程序就会挂掉,会造成极大地损失,所以,C++社区需要一种更安全、自动化的内存管理方式。

2025-09-03 22:31:27 795

原创 AB32 哈夫曼编码题解

还不了解哈夫曼编码的同学可以看下面这个视频了解一下。

2025-05-18 15:55:17 947

原创 HJ52 计算字符串的编辑距离 题解

含义:dp[i][j]表示字符串s的0到i和字符串t的0到j的编辑距离,由于要求的是字符串s和t的编辑距离,所以答案存储在dp[s.size()][t.size()]中。

2025-05-18 09:59:12 785

原创 C/C++不定参数的使用

最近在写有关日志的demo,自己造了轮子,感觉自己实现的不是很好,实现的是一个定参数的日志输出,包括时间、日志等级、进程id、源文件名等必要的信息,但这种固定的格式扩展性不是很好,又了解到一些的使用,今天写一下文章记录一下。

2025-05-14 23:30:08 409

原创 C++模板

提起模板,你可能会想起一些答题模板或者作文模板,只要套着写就可以,c++98引入了模板这个概念,它可以减少一些重复代码的书写,可以使用一段程序完成多个不同数据类型的处理。模板分为函数模板和类模板,我们先来学习函数模板。

2024-08-31 20:08:06 499

原创 C++容器——string

STL(Standard Template Library)全称标准模板库。STL分为六大组件,分别是算法(algorithm),迭代器(iterator)、仿函数(functior)、空间配置器(allocator)、容器(container)、适配器(adapter)an今天我们学习的是string容器。

2024-08-31 20:07:54 1302

原创 Linux安装tree命令失败的解决方法

之后就一直输入y即可,等安装完成后可以再次使用yum repolist,检查状态栏的数量,之后在使用yum install -y tree,tree命令就安装好了,下面是我在虚拟机使用tree的结果。接着输入下面这条命令。接着输入下面这条语句。

2024-08-25 17:40:46 988

原创 C++类与对象(下)

在经过前面两篇文章的学习,我们已经对类和对象有了一个比较全面的认识了,接下来让我们学习类与对象的最后一节内容。

2024-08-25 17:01:33 746

原创 C++类与对象(中)

在前一篇文章中,我们学习了c++类与对象的一些基本内容,也留下了一些问题,在本篇文章中,我们来一探究竟。一.类内默认成员函数有哪些在一个类中,除了我们自己写的内容外,编译器还为我们提供了一些默认的函数,如构造函数、析构函数,它们不能显示的调用,但当我们创建对象时,它们就会被被调用。下面让我们来揭开这些函数的神秘面纱。

2024-08-25 15:17:21 309

原创 C++类与对象(上)

C++是一门面向对象的语言,因此在C++中引入了类这个概念,并通过类的实例化来得到对象。类的:类是一个用户定义的类型,用于封装数据(属性)和操作这些数据的方法(成员函数)。举个例子,一个人有身高、体重、年龄、姓名等属性,我们可以通过一些成员函数来设置或者更改这些属性,也可以通过实例化来修改,或者使用这些成员函数来做一些其它的功能。我们可以把这个类看作一个人,它的所有属性都可以放在类里,而成员函数则可以对这些属性做一些操作。对象:对象是类的一个具体实例。每个对象都有自己的数据成员的副本,和类定义的方法。

2024-07-31 10:29:56 799

原创 初识c++

带你了解c++的发展历史以及基础知识

2024-07-31 10:29:38 1429

原创 有关环形链表的一些问题

在解决问题之前,我们先来了解一下什么是环形链表,我们以leetcode上的一道题目来感受一下,读者可以先尝试自己做一下或者直接看下面题目的图片。. - 力扣(LeetCode)

2024-05-01 19:18:40 78

原创 C语言指针

讲述了C语言指针的使用使用时可能会出现的错误

2024-04-05 17:01:50 1847 1

原创 用C语言实现猜数字游戏

C语言实现猜数字游戏

2023-12-25 21:20:59 468 1

原创 c语言的分支和循环

c语言分支和循环介绍

2023-12-19 14:59:53 527 1

空空如也

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

TA关注的人

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