
算法
qq_2362901685
这个作者很懒,什么都没留下…
展开
-
什么是防御性编程
在一个复杂多变的软件环境中,防御性编程的重要性不言而喻,它能够有效地预防错误,减少系统崩溃,并提高用户体验。这样在开发者编写出误用的代码或不合适的代码,可以即使被发现和修正,提高了整体的研发效率和研发质量。4、考虑限率:对于用户点击触发大量运算或者耗时操作,或者对于后台推送触发大量数据刷新的逻辑,都需要有自适应和限制频率的逻辑确保软性运行不会出现因卡顿导致的雪崩。3、养成逻辑完备的编程习惯:养成思考所有可能性的习惯,认真写好错误处理,编写逻辑完备的代码。6、输入验证:所有的用户输入都不应被信任。原创 2025-01-23 15:30:00 · 317 阅读 · 0 评论 -
什么是 clang-format ?
这个文件通常与Clang-Format工具一起使用,后者是LLVM项目中的一个工具,用于自动格式化C、C++、Objective-C代码。Clang-Format工具可以作为命令行工具单独使用,也可以集成到各种文本编辑器和集成开发环境(IDE)中,如VisualStudio、Xcode、Vim、Emacs、Atom和SublimeText。通过使用.clang-format文件,开发团队可以为其项目定义统一的代码风格,这样所有参与项目的开发者都能自动地按照相同的标准格式化代码。原创 2025-01-21 13:45:00 · 210 阅读 · 0 评论 -
什么是C++常量表达式
随着 C++14 和 C++17 的推出,对 constexpr 的支持有了进一步的扩展,如允许 constexpr 函数使用更多的标准库函数、支持 if constexpr(C++17)等。C++11 中出现了一个新的关键字 constexpr,这个关键字用于声明变量、函数、构造函数和类模板的实例化为常量表达式(constant expressions)。既可以用于对象声明,以保证对象的值在编译时是已知的,也可以用于函数,以保证函数在给定编译时已知的参数时能够返回一个编译时已知的结果。原创 2025-01-20 17:30:00 · 206 阅读 · 0 评论 -
项目编译速度的重要性
如果编译过程缓慢,它将成为瓶颈,延迟反馈循环,使得及早发现和修复缺陷的过程变得更加困难。此外,编译速度直接影响到软件发布的周期,过长的编译时间可能推迟产品的上市时间,影响竞争力。长时间的编译过程不仅耗费宝贵的开发时间,而且影响开发者的工作流程和生产力。开发者在等待编译完成时可能会分心或失去工作中的连续性和深度专注,这不利于维持高效率和高质量的代码编写。通过这些措施能显著减少等待编译完成的时间,提升开发效率,从而在激烈的市场竞争中占据优势。因此,在大型C++项目中,采用多种策略来优化编译速度是非常重要的,原创 2025-01-19 16:15:00 · 145 阅读 · 0 评论 -
C++的RTTI
而虚函数的存在意味着每个对象需要携带额外的信息(如v-table指针),这为RTTI的实现提供了必要的信息基础。不少人说,C++的RTTI(Runtime Type Information)的性能不行,或者dynamic_cast的性能不行。:这种行为是通过虚函数表(v-table)来实现的,每一个多态类都有一个v-table,其中包含了指向类的虚函数的指针。在技术上,要多问为什么,敢于挑战权威,深入思考问题的根本,切记不可人云亦云,滥竽充数。事实上,C++的RTTI的性能可以满足几乎一切的应用开发场景,原创 2025-01-18 11:45:00 · 366 阅读 · 0 评论 -
Visual Studio 的C++性能分析工具
开发团队应将性能视为核心质量指标之一,在自测阶段对性能情况具有良好的把控,而非仅仅作为发布前的检查项。:在开发阶段考虑性能可以引导开发出具有良好架构的软件,这样的软件更易于维护和扩展。而在发布后解决性能问题往往需要更多的权宜之计,这可能会牺牲代码的清晰性和未来的可维护性。实际上,性能问题应当在开发阶段就被重视并解决,并且在开发阶段也是最容易解决的阶段。掌握并熟练运用VS性能分析工具能帮助我们在开发阶段就彻底解决性能问题。:在开发阶段优化性能可以提前发现和修复可能导致失败的缺陷,减少发布后的风险。原创 2025-01-17 11:37:02 · 363 阅读 · 0 评论 -
算法一:八皇后问题(递归解法)
//八皇后问题,在8*8的棋盘上放8颗棋子,任何两颗棋子不能同行同列和同对角线/*思路: 1、Success(int k, int w)函数,探测第k行、第w例是否允许放入棋子(不与已放棋子在同行同列同对角线)。 2、Queue(int row),从第row行开始检测。如果第row行某个位置满足条件,则继续检测第row+1行,如果第row行没有一个位置满足条件,则撤回row-1行的...原创 2020-04-10 02:14:54 · 354 阅读 · 0 评论 -
算法二:堆排序
//堆排序,其复杂的为nlog(n)#include <iostream>using namespace std;//交换数组下标为i,j的元素void Swap(int tree[], int i, int j){ int temp = tree[i]; tree[i] = tree[j]; tree[j] = temp;}//堆化,将数组转化为大顶堆 如:...原创 2020-04-13 13:42:14 · 146 阅读 · 0 评论