
C++
文章平均质量分 82
Ljw...
不知道写什么
展开
-
C++方向就业
操作系统:Windows NT内核C++代码占比达68%(微软技术白皮书)量子计算:IBM Qiskit Runtime底层C++加速模块。蒙特卡洛模拟的SIMD优化(Intel Vtune性能分析案例)案例:Facebook Folly库中的高性能数据结构。MIT 6.828课程实验项目:实现操作系统内存管理。案例:Linux内核中Page Fault处理流程。自动驾驶:Waymo C++感知系统延迟优化方案。:从修复Chromium文档到优化V8引擎。数据库系统:MySQL存储引擎源码解析(原创 2025-03-28 17:43:03 · 2947 阅读 · 89 评论 -
C/C++错误信息
C/C++ 提供了一系列强大的错误处理机制,包括全局变量errno和函数perror()strerror()等来输出和捕获错误信息。通过合理地使用这些函数,可以有效地捕获并报告程序中的错误,帮助开发人员在调试和生产环境中定位问题。原创 2025-03-21 14:19:15 · 1902 阅读 · 88 评论 -
序列化和反序列化(Linux)
write和read实质是拷贝函数。原创 2025-03-11 08:40:30 · 2636 阅读 · 112 评论 -
C++发展
C++ 是由于 1979 年在贝尔实验室(Bell Labs)开始开发的,最初是作为 C 语言的一个扩展,目的是在不丧失 C 语言高效性的基础上,提供面向对象编程的特性。C++ 的早期发展1979-1985C++ 标准化过程1985-1998C++ 标准演化2003-2011C++112011年C++142014年C++172017年C++202020年C++232023年。原创 2025-03-04 08:51:09 · 2559 阅读 · 111 评论 -
C++ ⾼性能内存池
小知识点补充项⽬介绍1.这个项⽬做的是什么?当前项⽬是实现⼀个⾼并发的内存池,他的原型是google的⼀个开源项⽬tcmalloc,tcmalloc全称 Thread-Caching Malloc,即线程缓存的malloc,实现了⾼效的多线程内存管理,⽤于替代系统的内存分配相关的函数(malloc、free)。2.用到的知识这个项⽬会⽤到C/C++、数据结构(链表、哈希桶)、操作系统内存管理、单例模式、多线程、互斥锁等等⽅⾯的知识。小知识点补充。原创 2025-02-26 12:41:09 · 2565 阅读 · 75 评论 -
C/C++链接数据库(MySQL)(超级详细)
要使用库,必须先进行初始化!常用接口 mysqld是一套网络服务那么就注定了我们在进行mysql操作之前,一定是要能链接上mysql,所以要在之前创建一些基础的mysql数据结构。原创 2024-12-02 19:41:42 · 3741 阅读 · 123 评论 -
C/C++中的回调用法
解耦代码:回调函数将具体的实现和调用逻辑分离,使得不同模块可以独立开发。提高灵活性:回调允许你在运行时根据需求决定函数的行为,适用于各种不同的应用场景。支持异步编程:回调广泛应用于异步编程中,通过回调来处理异步任务的结果。框架和库设计:许多 C++ 框架使用回调机制,让用户可以传递自定义行为,增强框架的灵活性和可扩展性。避免重复代码:回调使得通用的操作可以复用,减少代码重复。多态行为:回调使得函数可以动态地决定执行不同的操作,实现类似多态的效果。原创 2024-11-25 19:45:23 · 3207 阅读 · 74 评论 -
C++学习顺序
C++是一种支持面向对象、泛型编程和多重编程范式的强大语言。GCC:GNU编译器集合,广泛应用于Linux。:Microsoft开发的强大IDE,适用于Windows。CLion:JetBrains开发的跨平台IDE,支持CMake构建系统。C++是一门功能强大的语言,掌握C++的编程技能需要不断的实践和学习。从基础语法到面向对象编程,再到STL的应用,最后到高级特性如智能指针和多线程编程,每个部分都在C++的学习过程中占有重要位置。原创 2024-11-18 18:21:45 · 1769 阅读 · 21 评论 -
随机数
***:简单、快速,但质量较低。适用于简单的需求。库:推荐使用现代的库,它提供了更高质量的随机数,并支持多种分布。分布选择:根据需求选择合适的分布类型(均匀分布、正态分布等)。随机字符与字符串:通过生成字符的 ASCII 值来生成随机字符或字符串。****:用于打乱容器元素顺序,常用于生成随机排列。通过,C++ 允许开发者根据需求灵活选择随机数生成方式,不仅提供了更高质量的随机数生成,还能更精细地控制生成数值的范围和分布。原创 2024-11-15 08:24:32 · 1899 阅读 · 119 评论 -
C++线程
特性C语言C++语言线程库依赖外部库(pthreads、Windows API)原生支持(线程创建使用使用线程同步使用等使用std::mutex等传递对象通过指针传递(手动管理内存)通过值、引用、智能指针传递(更灵活、安全)异常处理没有内建异常处理机制支持try-catch语句,异常可以在线程中捕获线程生命周期管理手动管理,使用或自动销毁,未join()或detach()会调用跨平台性需要依赖平台特定的线程库跨平台支持更好,使用标准线程库。原创 2024-11-11 22:25:34 · 1608 阅读 · 111 评论 -
C++ IO流
C语言中用sprintf可以整型转字符串C++中可以用ostringstream,自定义类型转字符串ostringstream是ostream的派生类这里的oss<<d,去调用的是ostream&operator<<,本质上都会以字符串的形式进去out,然后再用str函数取出这个字符串,用string接收。原创 2024-11-11 13:08:51 · 1348 阅读 · 46 评论 -
C++ 的发展
C++ 是由于 1979 年在贝尔实验室(Bell Labs)开始开发的,最初是作为 C 语言的一个扩展,目的是在不丧失 C 语言高效性的基础上,提供面向对象编程的特性。C++ 的早期发展1979-1985C++ 标准化过程1985-1998C++ 标准演化2003-2011C++112011年C++142014年C++172017年C++202020年C++232023年。原创 2024-11-09 12:43:28 · 4890 阅读 · 0 评论 -
C++游戏开发
C++ 是游戏开发中的主要编程语言之一,因其性能、控制和广泛的生态系统而受到开发者的青睐。随着游戏行业的迅速发展,C++ 被用来构建许多成功的游戏和游戏引擎。本文将深入探讨 C++ 在游戏开发中的应用,包括基础概念、技术栈、示例代码和实践技巧。原创 2024-11-01 16:36:54 · 2343 阅读 · 14 评论 -
C++11
在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞 进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于。原创 2024-10-23 10:22:29 · 1115 阅读 · 46 评论 -
十种排序方法
在C语言中,有多种排序算法可供选择,每种都有其独特的特点和应用场景。原创 2024-10-23 10:21:47 · 1672 阅读 · 80 评论 -
C++前期概念
/ 命名空间中可以定义变量/函数/类型int val;参数不同包含类型不同,顺序不同,类型的顺序不同和个数不同重载函数必须参数列表有所不同(包括参数类型和参数个数)重载函数不依靠返回值来区分,所以返回值可以相同函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型 不同的问题。int a = 10;// int& ra;// 该条语句编译时会出错。原创 2024-10-21 14:19:55 · 3693 阅读 · 58 评论 -
C++初阶
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。1.命名空间中可以定义变量/函数/类型,2.命名空间可以嵌套,3.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。一个工程中的test.h和上面test.cpp中两个N1会被合并成一个,代码例子test.cppint a;int b;int c;int d;test.h。原创 2024-10-19 09:58:20 · 1609 阅读 · 83 评论 -
(C/C++)文件
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。记住打开文件扩展名,要不然后缀会自己带上了。原创 2024-10-18 16:27:23 · 1339 阅读 · 155 评论 -
C++的类型转换
在自定义类型中重载string,这里涉及到文件的写入,string的str转c_str,弄成char类型才能插入直接重载int和bool的,就支持A转int值和bool了。这里加explcit不影响转换,更支持了与其他的相反,不加explcit,A不能转double,只能转int,加了就可以了。放宽了标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用。原创 2024-09-27 20:46:47 · 2394 阅读 · 56 评论 -
特殊类设计
拷贝只会放生在两个场景,因此想要让一个类禁止拷贝, 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。原创 2024-09-24 17:01:50 · 2142 阅读 · 48 评论 -
C++异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家 随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了// 服务器开发中通常使用的异常继承体系public:,_id(id){}protected:int _id;public:{}原创 2024-09-20 12:27:55 · 928 阅读 · 21 评论 -
红黑树 数据结构
/枚举//节点颜色RED,BLACK//红黑树节点的定义, _kv(kv){}插入的代码实现检测新节点插入后,红黑树的性质是否造到破坏因为新节点的默认颜色是红色,因此:如果其双亲节点的颜色是黑色,没有违反红黑树任何性质,则不需要调整;但当新插入节点的双亲节点颜色为红色时,就违反了性质三不能有连 在一起的红色节点,此时需要对红黑树分情况来讨论:约定:cur为当前节点,p为父节点,g为祖父节点,u为叔叔节点。原创 2024-09-16 20:39:22 · 902 阅读 · 0 评论 -
C++初阶大全
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。1.命名空间中可以定义变量/函数/类型,2.命名空间可以嵌套,3.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。一个工程中的test.h和上面test.cpp中两个N1会被合并成一个,代码例子test.cppint a;int b;int c;int d;test.h。原创 2024-09-16 20:37:30 · 1914 阅读 · 0 评论 -
AVL树
【代码】AVL树。原创 2024-09-01 15:59:38 · 780 阅读 · 0 评论 -
priority_queue的模拟实现
【代码】priority_queue的模拟实现。原创 2024-08-12 09:02:52 · 255 阅读 · 0 评论 -
queue的模拟实现
【代码】queue的模拟实现。原创 2024-08-06 21:19:24 · 136 阅读 · 1 评论 -
stack的模拟实现
【代码】stack的模拟实现。原创 2024-07-29 10:17:41 · 335 阅读 · 1 评论 -
list的模拟实现
clear,顺序表vector不需要释放空间,因为没法单独释放一部分空间,而链表list可以。这里的T*也分为const和不带const,所以加上class Ptr。但我们需要的是it++,可以被修改,不被修改的是指向的内容不被修改。(第二个const迭代器,第三个是带不带const的->的重载)这里是const迭代器的关键,返回的*it,就是指向的位置。里面必须加const,因为返回的end()具有常性。原创 2024-07-23 19:01:46 · 2085 阅读 · 31 评论 -
vector的模拟实现
/_start的原来空间已经释放,需要tmp,或者可以提前保存size()的大小,//因为size()返回的是_finish-_start,_start的指向已经变了所以,size()的大小是不确定,// 可以提前存size()的大小,这样就解决了指向改变的问题,可以在if外面,里面也可以,因为扩容才会改变指向。//insert的模拟实现,vector中的insert是用迭代器实现的,库里会返回pos这个位置。//erase的模拟实现,库里会返回删除位置的下一个位置,用的也是迭代器。原创 2024-07-16 18:04:57 · 1881 阅读 · 12 评论 -
string的模拟实现
分情况://resize的模拟实现,可以删除数据,也可以扩容,不缩容,当_capacity为15,_size为10时。//resize(8)就是删除数据(删除两个),resize(12)就是插入数据,resize(18)就是扩容。15find的模拟实现,从pos位置找一个字符,返回下标位置。14erase的模拟实现,pos位置后删除len个字符。12insert的模拟实现,pos位置插入字符串。20resize的模拟实现,可以删除数据。16find的模拟实现,找字符串。30>>的模拟实现,流插。原创 2024-07-09 11:12:33 · 2134 阅读 · 29 评论 -
函数模版和类模版
函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本。原创 2024-07-01 15:20:37 · 2393 阅读 · 18 评论 -
日期类的实现
知识点:// 后置++,后置++是先使用后+1,因此需要返回+1之前的旧值,故需在实现时需要先将this保存一份,然后给this + 1。知识点:拷贝构造,内置类型,自定义类型都会处理。默认赋值重载跟拷贝构造一个性质,拷贝构造是定义时,赋值重载是两个已经存在的。知识点:流插入流提取只能写在类外,因为需要两个接收值,要是在类内就会有隐藏的this指针,要用friend,友元函数声明。首先要实现一个获取月份天数的函数,要实现是否是闰年或平年,以及二月份的天数。知识点:日期+=天数,+=改变了自身,*原创 2024-06-30 10:05:33 · 1670 阅读 · 23 评论 -
this指针小总结
在类的非静态成员函数中,this指针是一个指向调用该函数的对象的指针。注意,this指针是常量指针,你不能改变this指针使其指向其他对象,但你可以改变它所指向的对象的内容。在C++中,this指针只在类的非静态成员函数中存在,而在全局范围内,是没有this指针的。在C++中,this指针是一个隐式的、非静态的成员指针,它指向调用它的对象的地址。每个非静态成员函数都含有一个this指针,该指针在成员函数中用于访问调用它的对象的成员。当成员函数被调用时,this指针被自动绑定到调用该函数的对象的地址上。原创 2024-06-19 12:55:28 · 1671 阅读 · 7 评论 -
C++前期概念(重)
1、基本任何场景都可以引用传参2、谨慎用引用做返回值。出了函数作用域,对象不在了,就不能用引用返回,还在就可以用引用返回引用的读写功能和优点查找和修改改进引用和指针的区别引用和指针的不同点:1. 引用概念上定义一个变量的别名,指针存储一个变量地址。2. 引用在定义时必须初始化,指针没有要求3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何 一个同类型实体4. 没有NULL引用,但有NULL指针。原创 2024-06-16 12:25:11 · 2776 阅读 · 27 评论 -
C++入门小结
总结来说,C++ 的输入和输出操作是通过流类来实现的,这些流类提供了简单易用的接口来处理数据的不同来源和目标。总结来说,C++ 中的缺省参数提供了一种灵活的方式来为函数定义默认值,使得函数调用更加简洁,同时也支持函数重载和构造函数的灵活使用。6.命名空间与命名遮蔽:如果在命名空间内部定义了一个与全局变量或函数同名的成员,那么在命名空间内部,该全局成员会被遮蔽(隐藏)。总之,C++ 命名空间是一种非常有用的特性,可以帮助开发者组织代码、避免命名冲突,并提高代码的可维护性。5.命名空间的别名:可以使用。原创 2024-06-14 10:16:58 · 1822 阅读 · 10 评论