- 博客(65)
- 收藏
- 关注
原创 浅析declval关键字
本文详细讲解 declval 特性和使用场景,它允许我们在不实例化对象的情况下使用其类型。这在模板元编程中尤其重要,因为它使得我们能够在编译时进行类型推导,而无需关心对象的构造。
2024-05-23 21:13:16 603
原创 模板中的右值引用(万能引用)、引用折叠与完美转发
本文通过详细的案例,循序渐进的讲解万能引用、引用折叠、完美转发。这三个概念之间的联系紧密以及使用场景高度重合,正是因为C++11中提出如此富有意义的新概念,极大地方便了我们重构代码,理想高效地编码实现功能。
2024-05-23 21:07:25 782
原创 位图bitset的模拟实现与位运算
本文探讨C++中的位操作与位图bitset,通过介绍bitset和two_bitset类模板,将展示如何利用C++的位操作来解决实际问题,位图为处理大量数据提供了一种高效且直观的方法,无论是在内存受限的环境中处理大规模数据集,还是在日常编程中寻找优化的机会,都是一个不可或缺的工具。
2024-05-17 02:31:14 964
原创 一文搞懂左值与右值兼左值引用和右值引用(附右值引用的移动语义)
本文循序渐进的结合案例阐释左值引用和右值引用概念,同时解释为什么存在、怎么样使用的问题,尤其着重与对不同使用场景下用途的剖析。
2024-05-17 02:25:20 780
原创 面试题6 -- 腐烂的苹果(多源DFS)
本文讲述如何使用BFS来模拟腐烂的传播过程,算法时间复杂度为O(m*n)。通过维护一个队列来存储需要传播的苹果位置,并且二维数组来标记已经访问过的位置,以避免重复处理。通过逐层传播,我们可以确保每个苹果都是以最短的时间腐烂。
2024-04-23 11:47:21 685
原创 笔试题4 -- 除2!(k次机会偶数除2求最小和)
当操作次数 k 较大时。通过优先队列处理得到最大的偶数,我们能够显著减少所需的操作次数,从而在给定的时间限制内找到最小的和,所以此处priority_queue优于multiset的处理效率。
2024-04-18 18:11:00 470
原创 笔试题3 -- dd爱框框(滑动窗口内值加和大于x的最小区间)
对于这道题尝试了三种不同的方法,其中滑动窗口可以很好的解决重复遍历的浪费,保证了时间复杂度为O(n),分别使用两个指针控制访问数组的节奏,不走回头路,最大程度的实现了提升算法效率。
2024-04-18 18:04:42 735
原创 笔试题2 -- 字符串数组中指定字符串间的最短距离
本文探讨了两种不同的基于C++解题方法。从基本的暴力法到更高效的优化算法,我们不仅学习了如何实现它们,还了解了如何分析它们的性能,并在实际应用中做出合适的选择。
2024-04-16 22:44:50 360
原创 笔试题1 -- 吃掉字符串中相邻的相同字符(点击消除_牛客网)
本文对于点击消除相邻字符的问题给出了两种不同的解决方案,分别基于 string::erase() 函数和 stack 数据结构实现,并分析了两者的优劣。
2024-04-16 22:37:33 733
原创 解决VScode中git push代码报错“Missing or invalid credentials.”
简单的步骤完美解决了vscode中git push报错的问题,实现一劳永逸
2024-04-13 23:26:56 439
原创 【动态规划】路径问题模型
本文从基础的不同路径问题开始,逐步深入到更复杂的最小路径和等问题,每个例题详细介绍状态表示、状态转移方程、初始化过程、填表顺序和返回值,以确保读者能够清晰地理解DP的核心原理。
2024-04-13 23:22:26 980
原创 剖析C++中的多态
深度剖析了C++多态性的深层次概念,包括虚函数、继承、final和override关键字,以及虚函数表和虚表指针。通过具体的代码示例,我们将揭示这些概念背后的工作原理,并展示它们如何在实际编程中发挥作用。
2024-04-09 19:08:06 900
原创 何为C++中的协变
本文深入探讨了C++中的协变特性,包括其定义、构成条件,以及在克隆操作和设计模式中的应用实例。协变允许派生类在重写基类虚函数时返回派生类类型的指针或引用,从而提供了更精确的类型信息和更灵活的代码设计可能性。
2024-04-09 10:33:24 343
原创 剖析C++中的继承
本文将从概念开始讲解继承的规范、特性以及不同情况下的注意点,包括赋值转换、作用域问题、默认函数调用问题、友元函数、静态成员等,希望本文对你能够有所帮助。 继承一定程度破坏了基类的封装,基类的改变,对派生类有很大的影响。派生类和基类间的依赖关系很强,耦合度高。
2024-04-04 11:33:56 1091
原创 剖析C++中的菱形继承
本文通过实例代码和内存监视图解析了菱形继承的问题,并介绍了虚拟继承作为一种解决方案。通过将基类声明为虚基类,我们可以确保在派生类中只有一个基类实例,从而避免了数据冗余。
2024-04-04 11:17:39 307
原创 解决ubuntu报错“Failed to start sshd.service Unit sshd.service not found.”
开启ssh服务时报错找不到“sshd.service”,通过一句代码解决
2024-03-30 19:02:30 1083 1
原创 【动态规划】斐波那契数列模型
深入探讨斐波那契数列模型相关问题的解决方法,通过精心挑选的例题,每个问题都将通过状态表示、状态转移方程、初始化、填表顺序和返回值的详细分析来解构,旨在提供一个清晰的算法实现框架,帮助读者掌握DP的精髓,并在实际编程中灵活运用。
2024-03-29 01:16:53 869
原创 C++的非类型模板参数与模板分离编译(模板显式实例化)
本文章绍了C++中的非类型模板参数和模板分离编译的概念。非类型模板参数是模板中的常量参数,可以在模板中当作常量使用。模板分离编译是将程序分为多个源文件进行单独编译生成目标文件,然后将目标文件链接为单一的可执行文件。文章还介绍了解决模板分离编译问题的方法,包括模板显式实例化和重新定义普通函数。
2024-03-29 01:10:43 891
原创 string类的详细模拟实现
本文详细介绍从零开始实现String类,新手友好,包含扩容逻辑、避免溢出、隐含参数、声明定义分离范式,以及丰富的操作实现细节详解,同时指出易错注意点
2024-03-23 21:07:45 1097
原创 一文打尽CentOS网络报错(亲测)
无论是ping不通,还是ping报错:name or service not known,或是git拉取失败,统统可以通过本文的方法解决,故记录自己修复的全过程,也希望能帮助到他人。
2024-03-23 20:52:27 373
原创 浅析C++的指针与引用
引用的使用可以一定程度避免“指针满天飞”的情况,对于提升程序稳定性也有一定的积极意义。同时指针与引用底层实现都是一样的,不用担心两者的性能差距。
2024-03-14 19:45:14 1069
原创 浅析decltype关键字
深入探讨decltype的基本用法、规则以及它如何提高我们代码的可读性和灵活性。它提供了一种类型安全的方式来推导变量和表达式的类型。
2024-03-14 19:41:37 959
原创 浅析extern关键字
C++ 和C语言在编译和链接的过程中有一些区别,需要使用 extern 关键字来解决一些问题。本文将介绍 extern 关键字的作用和用法,以及如何在 C++ 中调用C函数和在C中调用 C++ 函数的方法和注意事项。
2024-03-07 16:51:29 1198
原创 浅析assert宏
首先断言(assert)是宏,而非函数。assert 宏的作用是如果它的条件返回错误,则终止程序执行。assert 宏的优点是可以在开发和调试阶段快速发现和定位程序中的错误,提高代码的可测试性和可靠性。
2024-03-07 16:39:58 992
原创 浅析volatile关键字
volatile 关键字声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)const 可以是 volatile(如只读的状态寄存器)指针可以是 volatile。
2024-03-04 23:57:38 883
原创 浅析虚函数的vptr和虚函数表
C++使用一种称为虚拟表的特殊形式的后期绑定,该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表,本文对虚表指针和虚函数表的模型进行刻画。
2024-03-04 00:15:00 354
原创 浅析 explicit 关键字
explicit 修饰构造函数时,可以防止隐式转换和复制初始化explicit 修饰转换函数时,可以防止隐式转换,但按语境转换除外。
2024-03-03 04:00:00 803
原创 单、多参数构造函数的隐式类型转换
在C++中,构造函数不仅用于初始化对象的状态,还可以实现隐式类型转换。本文详细介绍了单参数和多参数构造函数的隐式类型转换技术和explicit关键字的作用。
2024-02-26 21:36:10 879
原创 C++之善用const修饰成员函数
介绍一些在类中善用const修饰成员函数的案例,以及相应的代码示例。通过善用const修饰成员函数,我们能够在C++代码中提高代码的可维护性、可读性,并且更好地支持类的设计和重载。
2024-02-26 15:28:08 361
原创 C++中获取成员函数地址的方法
总结了两种目前最高效易用的方法来获取成员函数地址,其中第一种利用函数模板实现,第二种直接在 .cpp 文件中利用汇编方法的offset语句实现。 至于为什么要取成员函数的地址?因为可以通过一定手段使得成员函数作为回调函数,而无需使用全局的静态函数。
2024-02-17 15:41:45 854 2
原创 命名空间(namespace)及其应用技巧
演示了如何在不同命名空间中定义变量和自定义类型,并展示了它们的使用方法。介绍了C++中命名空间的基本概念、使用方法以及与变量交互的关系。
2024-02-04 14:10:42 1088
原创 仅需这条指令解决 sudo 报错或将用户添加到 sudoers
不需要 nano、vim 这类的编译器,也不需要 chmod 更改 /etc/sudoers 文件只读权限,只需要控制台终端在 root 用户情况下输入这串代码即可简便快捷地解决你的问题
2024-01-28 22:17:57 398
原创 Linux / CentOS下利用终端调节音量
利用 alsamixer 工具打开可视化窗口调节Linux系统音量,并解决实现过程中出现的报错问题
2024-01-24 16:28:10 739
原创 Linux 常用指令汇总
全面介绍了Linux系统中常用的命令,包括文件目录、时间日期、搜索查找和压缩解压缩等方面。通过具体的案例演示,读者可以快速学会如何在Linux终端下进行文件的管理和系统操作。
2024-01-09 18:45:49 1535 1
原创 利用C语言模拟实现堆的基本操作和调堆算法
主要讲述了堆的基本原理和特性,使用C语言模拟实现堆的初始化、插入、删除等基本操作,通过回调函数和函数指针实现大根堆和小根堆的不同调堆算法,堆的应用场景和优势等内容
2023-12-11 13:59:39 343
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人