
2025 - C++
文章平均质量分 80
C++ 语言
DBWG
这个作者很懒,什么都没留下…
展开
-
c++比较器——priority_queue用 ; unordered_map 自定义哈希函数
往往算法可能需要自定义比较逻辑(如 dijkstra需要比较对应路径的长度)重写方法:注意都是子节点跟父节点比(堆一般是二叉树)template<class T,这里的 Compare 是一个类型(class),而模板本来也是类型STL是这样使用他的// 默认构造一个比较器对象if (comp(a, b)) { ... } // 用这个对象来比较像 std::pair<int, int> 这样的类型标准库没有默认的 std::hash 特化,因此需要自己提供一个哈希函数。原创 2025-04-10 00:00:08 · 442 阅读 · 0 评论 -
c++11新特性
类内成员初始值“委托构造函数”:允许一个构造函数在其初始化列表中调用同类中的另一个构造函数int x = 0;// 成员初始化MyClass() : MyClass(42) {} // 委托构造函数。原创 2025-04-08 20:28:58 · 992 阅读 · 0 评论 -
c编译和c++编译有什么区别?
Z 是 GCC 名称修饰的前缀,3 表示函数名的长度,foo 是函数名,i 表示一个 int 类型的参数。关闭 C++ 的 name mangling,让编译器用 C 的方式处理符号名。iostream 类型安全,重载 <<, >> 运算符,无需格式字符串.C++ 程序除了链接 C 标准库外,还需要链接到 C++ 标准库。C++更严格, 不允许隐式把 void* 转成 int*尽管是运行时多态,也需要编译时生成 虚函数表和指针。C++ 支持多个同名函数(参数不同),这是。编译的符号名需要进行。原创 2025-04-08 18:22:41 · 217 阅读 · 0 评论 -
io_uring 异步 socket 编程
(仅通过完成队列项中的结果信息(如 cqe->res)可能无法明确这个请求对应的具体上下文;标记一个完成队列项已经被应用程序处理,允许内核回收该 CQE 所占用的资源。网络IO时,数据拷贝并不是CPU在工作,所以我们可以不阻塞recv。对于提交队列,我们想三次握手和接收数据,都要提交信息给 提交队列。获取到这个关联的信息,从而知道该请求信息(自己设计结构体)。编程中往往是去获取 entry ,即sqe和cqe。首先定义 io_uring,之后都通过其交互。两个队列位于用户态和内核态之间的共享内存区域。原创 2025-04-06 15:30:56 · 409 阅读 · 0 评论 -
c++项目 网络聊天服务器 实现;QPS测试
设计细节和实现细节,以及测试迭代原创 2025-04-04 00:46:02 · 962 阅读 · 0 评论 -
gcc 链接顺序,静态库循环依赖问题
链接过程由链接器ld负责。通常 GCC 间接驱动之。越底层的库,在链接命令行中的位置应越靠后。原创 2025-04-02 22:21:44 · 672 阅读 · 0 评论 -
protobuf编码官方文档 部分摘取翻译
读文档可知,序列化后不保存字段名 key ,解析方也必须有对应 protoc 协议才能知道字段名。易知该序列化后大小小。以及无符号整数,通过编码舍去前导0,数字占的空间就小了,如 1 本身就只需要 8个比特位,而非 int 4个比特位。原创 2025-04-01 19:23:22 · 895 阅读 · 0 评论 -
协程 Coroutine
如果你在做异步编程(如网络 I/O、文件 I/O),用 co_await如果你在实现生成器(如迭代器、流式数据处理),用 co_yield原创 2025-03-30 21:39:53 · 1085 阅读 · 0 评论 -
【RTTI】 Run-Time Type Information
当 dynamic_cast 进行向下转型(基类→派生类)或 横向转型(多重继承中的基类间转换)时,它必须检查当前对象的基类是否与目标类型匹配。指针调整:若目标类型是实际对象的其他基类(非源类型所在分支),dynamic_cast 会根据 RTTI 中存储的偏移信息调整指针,指向正确的子对象。如果类有虚函数,编译器会在内存中为每个多态类型(包含虚函数的类)生成一个 虚表,RTTI 信息通常存储在这个虚表中。在 C++ 中,只有虚函数才会生成 RTTI 信息,因为虚函数机制提供了运行时的多态支持。原创 2025-03-28 20:02:05 · 812 阅读 · 0 评论 -
C++类型转换
cast 铸造。原创 2025-03-28 14:55:38 · 553 阅读 · 0 评论 -
const 底层 , 顶层/底层 const
如果 const 变量是全局/静态变量,且未涉及指针,编译器可能会将其存入 .rodata 段,禁止修改。Top-level const 顶层const, 顶层 const 直接作用于变量本身.。Low-level const 底层const: 底层 const 作用于指针指向的对象或引用。编译器会进行 const 类型检查,若有修改const变量,编译错误。顶层 + 底层 const,p3 既不能修改指向,也不能修改值。顶层 const ,p2 不能被修改,但可以修改其指向的值。原创 2025-03-28 14:45:32 · 405 阅读 · 0 评论 -
C++锁: 读锁,递归锁,超时锁
面试聊到锁,只知道数据库的读锁,不了解编程中的读锁,也没谈,遂败北。原创 2025-03-21 11:06:29 · 382 阅读 · 0 评论