![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 64
A small mouse
只要是踏入了这个专业,要学的知识是非常多的,每天积累才能不断的进步。
要学习的东西很多,很细,在这个平台记录下来的话之后还可以复习自己学了什么,增强记忆。
同时还可以锻炼自己的思维能力,将想到的东西写下来与仅仅想是一个质变,因为自己想出来了只是自己认为自己懂了,而在这个平台写下来,不仅自己要非常的了解,还要让别人也能看懂,我觉得这一点非常的重要。
希望大家看完我的博客有所收获,有错误的话希望可以立马在评论区指出,共勉!!!
展开
-
if-else对比switch-case
如果if-else不进行二分、哈希等优化,switch-case结构的执行效率高,是以空间(跳转表)换时间的一种策略。原创 2024-07-02 20:15:35 · 465 阅读 · 0 评论 -
C++ 疑难点
调用成员函数时,成员函数通过一个名为 this 的隐式参数来访问调用它的那个对象,用请求该函数的对象地址初始化 this ,this 的指向总是自己这个对象,所以 this 是一个常量指针。原创 2024-03-09 15:30:54 · 548 阅读 · 0 评论 -
C/C++指针深析
指针对于初学者往往是很难以琢磨的东西,因为它并不如变量那么抽象,而是更贴近底层的真实结构。指针操作往往会出现各种各样的岔子,最常见的便是”segmentation fault”。原创 2024-01-17 02:00:00 · 423 阅读 · 0 评论 -
统计项目代码行数工具cloc
使用cloc在Ubuntu和Windows下统计代码行数cloc .原创 2023-06-23 19:13:47 · 939 阅读 · 0 评论 -
inline关键字
一个好的编译器将会根据函数的定义体,自动地取消不值得的内联(这进一步说明了 inline 不应该出现在函数的声明中)。原创 2023-04-03 21:40:44 · 252 阅读 · 0 评论 -
C++ inline关键字
内联函数可以减少函数的执行时间:原因是它可以在使用时直接进行替换(像宏一样展开),从而避免出现参数压栈、代码生成等操作,但是如果函数体过大,编译器就不会将其作为内联函数,即使加了关键字inline,同时内联函数不能递归。如果一些简单的函数直接在类中声明并且定义,编译器可以将其优化为内联函数。关键字inline必须与函数定义放在一起才能使函数成为内联函数,仅仅将inline放在函数声明前面不起任何作用。原创 2023-03-13 21:29:58 · 227 阅读 · 0 评论 -
C++ 多线程:原子操作atomic
atomic的两个方法:load()//读取数据 store()//存储数据 fetch_add(val)//加法 fetch_sub(val)//减法 exchange()头文件中,原子类型是封装了一个值的类型,它的访问保证不会导致数据的竞争,并且可以用于在不同的线程之间同步内存访问。可以用在指针对象上,但是只表示指针是原子类型,指针指向的数据不一定是,atomic ptr;有两个线程,一个要写数据,一个读数据,如果不加锁,可能会造成读写值混乱,使用。程序执行不会导致混乱,原创 2022-12-21 20:54:34 · 2219 阅读 · 2 评论 -
CPP指针的种类以及区别
在C和C++中,用0和NULL都可以表示空指针空指针误操作的后果:如果对空指针解引用,程序会崩溃,。NULL空指针被分配的区域是一个空闲的区域,没有对应的物理空间与之对应,所以对这段空间来说,任何读操作都是非法的,并且都要保证这个区域都没有与之对应的地址(空指针区域)。由于 使用 0 和NULL表示空指针会出现歧义,C++ 11 推荐使用nullptr,也就是(void *)0。在 Linux 平台下,要使用nullptr编译需要加上-std=C++11参数。原创 2022-12-21 20:34:58 · 319 阅读 · 0 评论 -
Static、#define、const、mutable、typedef
代码存储区域:常量区、代码区、静态区(全局区)、堆区、栈区栈区向下增长,堆区向上增长。,堆区存储动态开辟的变量。还有一个内核空间,但是它不与用户直接交互(内核区)。原创 2022-12-19 11:59:36 · 302 阅读 · 0 评论 -
跟腾讯架构大师学网络框架与后台架构
master-slave:master宕机之后,将slave转为master。利用上层来保存,可以直接使用上层的局部变量,回调的地狱。监控点多一点,出现问题的时候就比较快的找到问题所在。有持久化与非持久化的选择,可能是一个状态,不需要落地。远程数据库redis,文档数据库mongoDB。性能最高:不会阻塞IO,数据拷贝最少。使用非阻塞IO,检测到有事件。很容易扩展,平行扩展。原创 2022-12-17 10:53:59 · 463 阅读 · 0 评论 -
string底层实现之SSO
这就说明当字符串长度小于16时,是在栈上面分配内存,大于16的时候,在堆上分配内存,也就是调用了new方法。这里对new进行了重载,以便我们观察是否调用的new。原创 2022-12-11 18:41:16 · 195 阅读 · 0 评论 -
C++ 中explicit的作用及用法
explicit可以抑制内置类型隐式转换,所以在类的构造函数中,最好尽可能多用explicit关键字,防止不必要的隐式转换。原创 2022-11-25 20:18:03 · 523 阅读 · 0 评论 -
八大排序算法
桶排序:将数据放到到各个桶中,在插入数据的时候每个桶的数据保持有序,所以每个桶相当于是一个有序链表。最后将各个桶合并起来,即将各个链表Merge,形成一个有序的整体。一半一半砍开来,砍成只有两个元素之后,归并。原创 2022-11-25 20:02:45 · 138 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)1028 人口普查
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。...原创 2022-07-15 23:24:58 · 83 阅读 · 0 评论 -
C++的智能指针
目录前言1、unique_ptr2、auto_ptr引入问题3、shared_ptr接口:4、weak_ptr参考文章:C++STL(Standard Template Library)一共提供了四种指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中auto_ptr是c++98提供的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。独占的指针,只可以自己使用,它指向的对象只可以他一个人使用,可以使用move将使用权转移。...原创 2022-07-10 14:36:45 · 913 阅读 · 0 评论 -
c++:前置++和后置++的运算符重载、红黑树的概念、static关键字
绝不重新定义继承而来的缺省参数值,原因:virtual 函数是动态绑定,而缺省参数是静态的。红黑树红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。红黑树的应用红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lg2n),效率非常之高。原创 2022-07-05 23:04:24 · 252 阅读 · 0 评论 -
c++内存模型、编译过程、gcc命令
1、源代码区:存储代码的区域(类似jvm里的方法区)2、静态区:存储静态变量和全局变量的区域(类似jvm里的方法区里的方法区)3、栈区:存储局部变量和参数的内存区域,由系统开辟、由系统回收的内存区域(类似jvm里的栈)4、堆区:程序员开辟的一块内存区域用来存储对象的区域,由用户开辟和回收的内存区域。(类似jvm里的堆)5、常量区(字面值区):(类似于jvm里的方法区的常量池)指针变量能指向那些区域:栈区、堆区、静态区、常量区、代码区...原创 2022-06-22 17:28:12 · 168 阅读 · 0 评论