C++拾趣
文章平均质量分 93
本系列将介绍一些有趣的C++语法糖
breaksoftware
这个作者很懒,什么都没留下…
展开
-
C++拾趣——转换编译器生成的类型名为代码中的类型名
在软件开发中,特别是在使用C++这类静态类型语言时,编译器在编译过程中会生成许多内部表示,包括类型信息。这些内部类型名通常用于编译器的内部处理,比如类型检查、优化和代码生成等。然而,在编写源代码或进行调试时,我们更习惯于使用人类可读和易于理解的类型名。比如我们不太能看懂,但是可以看懂。因此,将C++编译器生成的类型名转换成代码中的类型名具有多方面的必要性:提高代码的可读性。源代码中的类型名应该清晰地反映其意图和用途,以便于开发者和维护者理解。原创 2024-08-20 00:15:00 · 2301 阅读 · 0 评论 -
C++拾趣——使用VSCode跨平台调试CMake编译的C/C++项目
VSCode的远程开发功能为开发者带来了诸多好处,极大地提升了开发效率和灵活性。首先,它允许开发者在本地编辑环境中直接连接到远程服务器或容器进行代码开发,这样就不需要在本地机器上搭建完整的开发环境,节省了大量的时间和精力。无论是使用SSH连接到远程Linux服务器,还是在Docker容器中进行开发,VSCode都提供了无缝的集成和便捷的操作体验。远程开发的好处不仅在于节省时间,还在于它提供了跨平台的支持。原创 2024-08-17 00:15:00 · 1452 阅读 · 0 评论 -
C++拾趣——编译器预处理宏__COUNTER__的应用场景
在C++中,是一个特殊的预处理宏,它主要被用来生成唯一的整数标识符。这个宏是由一些编译器(如GCC和Visual Studio)内置支持的,而不是C++标准的一部分。它的主要应用场景是在宏定义中,用于确保每次宏实例化时都能获得一个唯一的标识符,这在处理模板元编程、避免名称冲突或生成唯一标识符等场景中特别有用。宏每次,都会返回一个从0开始的连续递增的整数值。这意味着,在代码的不同部分或不同文件中使用时,它都能保证生成唯一的整数。这对于在编译时生成唯一的变量名、函数名或枚举值等非常有帮助。需要注意的是,因为。原创 2024-08-16 00:15:00 · 861 阅读 · 0 评论 -
C++拾趣——使用stl标准库实现排序算法及评测
今天看了一篇文章,讲各种语言的优势和劣势。其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义。这让它在专心研究算法的人中非常受欢迎。所以很多时候,语言的争论没有太多的意义,有意义的是它适不适合某些场景或者某些人。(转载请指明出于breaksoftware的csdn博客) 目前在网上讨论排序算法更多是C语言实现的。...原创 2018-10-18 22:00:17 · 2365 阅读 · 2 评论 -
C++拾趣——使用stl标准库生成等差、等比数列的方法
代码是思想的表达。阅读代码是一个猜测、求证的过程。这个过程非常费脑,所以人们都不喜欢啰啰嗦嗦的表达方式。于是在相同认知水平下,简洁高效的表达是喜闻乐见的。本文将抛砖引玉,通过一些案例讲解如何去简化代码。(转载请指明出于breaksoftware的csdn博客)关系数列等差数列 比如我们要构建的序列存储的值是0,1,2,3,4……9999。常规写法...原创 2018-10-12 13:17:48 · 7383 阅读 · 1 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——遍历和删除
相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客)遍历从前往后traversal_begin_16384_highest 性能最差的是map、multimap、set和...原创 2018-10-06 01:17:46 · 1468 阅读 · 1 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——删除
相关环境和说明在已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。原创 2018-10-06 00:41:25 · 2535 阅读 · 1 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows Visual Studio)——插入
操作系统是Windows10 64bit,编译器是 Microsoft Visual Studio Community 10。编译产出是64位测试程序。(转载请指明出于breaksoftware的csdn博客) 因为加入测量,就会导致误差。我已经尽量将环境影响降低,但是还是难免有误差。大家可以通过文后附的工程自行测量,结果可能和我存在一定的出入。 ...原创 2018-10-05 23:59:58 · 1707 阅读 · 2 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找
相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客)遍历从前往后元素个数>15000traversal_begin_16384_highest 表现最差的是unordered_m...原创 2018-10-05 21:21:25 · 1931 阅读 · 1 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除
相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客)删除头部删除元素个数>15000erase_begin_16384_highest vector容器性能最差。...原创 2018-10-05 17:06:08 · 1310 阅读 · 1 评论 -
C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入
操作系统是ubuntu 18.04.1 server amd64,gcc是7.3.0。编译产出是64位测试程序。(转载请指明出于breaksoftware的csdn博客) 因为加入测量,就会导致误差。我已经尽量将环境影响降低,但是还是难免有误差。大家可以通过文后附的工程自行测量,结果可能和我存在一定的出入。 文中将测试vector、list、f...原创 2018-10-05 17:05:57 · 1303 阅读 · 1 评论 -
C++拾趣——使用多态减少泛型带来的代码膨胀
泛型编程是C++语言中一种非常重要的技术,它可以让我们大大减少相似代码编写量。有时候,我和同事提及该技术时,称它是“一种让编译器帮我们写代码的技术”。(转载请指明出于breaksoftware的csdn博客) C++是一门静态语言,它最终的编译成果是可以直接运行于冯诺依曼体系的计算机上,而不像其他动态语言,可以运行于虚拟机等容器中。由于对运行效率得追求,C++也是...原创 2018-09-01 15:05:38 · 1177 阅读 · 1 评论 -
C++拾趣——C++11的语法糖auto
C++是一种强类型的语言,比如变量a,如果声明它是整型,则之后只能将它作为整型来用。这和其他弱类型的语言有很大的区别,比如python中,我们可以让a在第一行是个整型,第三行是一个字符串。(转载请指明出于breaksoftware的csdn博客)a = 3print aa = "3"print a C++代码在声明一个变量时就已经明确指定了它的类型。这...原创 2018-01-22 19:01:13 · 1727 阅读 · 0 评论 -
C++拾趣——有趣的操作符重载
“有趣”并不是胡闹,所以本文探讨的将是“符合常识”的重载。而那些“天马行空”的重载,比如重载==为“不等于”则不是本文的议题。原创 2018-06-13 17:28:09 · 601 阅读 · 0 评论 -
C++拾趣——类构造函数的隐式转换
之前看过一些批判C++的文章,大致意思是它包含了太多的“奇技淫巧”,并不是一门好的语言。我对这个“奇技淫巧”的描述颇感兴趣,因为按照批判者的说法,C++的一些特性恰巧可以让一些炫耀技术的同学有了炫耀的资本——毕竟路人皆知的东西却没什么好炫耀的。这又让我想起了《孔乙己》中关于“回”字有几种写法的描述。当时老师在上此课时,是抱着批判的态度去评价孔乙己的这种思想,而我却感觉到这其中必有一...原创 2017-02-08 12:33:46 · 6022 阅读 · 8 评论 -
C++的四种强制转换
C++的四种强制转换 C++中的四种转换,是一个老生常谈的话题。但是对于初学者来说,该如何选择哪种转换方式仍然会有点困惑。而且我总是觉得“纸上得来终觉浅”,于是便“绝知此事要躬行”。于是利用闲暇时光,整理一下reinterpret_cast、const_cast、static_cast和dynamic_cast这四种强制转换的相关知识。(转载请指明出于breaksoftware的...原创 2014-12-16 12:39:45 · 29419 阅读 · 2 评论