- 博客(18)
- 收藏
- 关注
原创 C++ 的命名空间解析规则
hdmap_new::MapHeader::MapType 被解析为 zark::hdmap_new::MapHeader::MapType,而不是 zark::pk_planning::hdmap_new::MapHeader::MapType,因为 hdmap_new 明确指定了一个具体的命名空间,编译器会从这个命名空间开始查找。答:问题涉及 C++ 命名空间解析的具体规则。为什么不会解析为 zark::pk_planning::hdmap_new::MapHeader::MapType?
2024-11-04 16:06:17
351
原创 互斥锁(std::mutex)的作用
在 std::lock_guard 的构造函数中,localization_state_lock_ 会被自动锁定。理解 std::lock_guard 如何在超出作用域时自动释放互斥锁是理解 C++ 中 RAII(Resource Acquisition Is Initialization,资源获取即初始化)原则的关键。当 std::lock_guard 对象超出作用域时,它会自动释放互斥锁,确保资源的正确管理和线程安全。RAII 是一种编程范式,通过对象的生命周期管理资源的获取和释放。
2024-10-31 22:21:01
351
原创 weak_ptr的使用
weak_ptr不能访问所指向的对象吗?为什么呢,那它的作用是什么?std::weak_ptr 是 C++ 标准库中的智能指针之一,它与 std::shared_ptr 一起使用,用于解决 std::shared_ptr 可能引起的循环引用问题。std::weak_ptr 本身不拥有它所指向的对象,也不增加对象的引用计数。它是对 std::shared_ptr 的一种补充。
2024-06-25 14:24:54
384
原创 多态的具体使用(疑惑点)
这意味着,如果子类重写了Process函数,即使Run函数是非虚函数,线程内部调用的Process函数也将是子类重写后的版本。在这个例子中,即使Run函数是非虚函数,线程内部调用的Process函数根据this指针的动态类型(这里是PlanningTask类型)来确定调用哪个版本的Process。创建并启动一个线程,线程的入口函数是ThreadExtension类的Run函数,this指针作为参数传递给线程。PlanningTask类中的Process函数重写了父类的Process函数。
2024-06-24 18:36:18
1355
原创 静态成员变量和静态成员函数的概念(注意项)
总结一下,静态成员函数可以被对象实例调用,但这样做通常没有特别的好处,因为静态成员函数不依赖于任何特定的对象实例。它们是类级别的函数,可以被类的所有实例共享。
2024-06-24 16:37:28
201
原创 代码随想录day7(● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结 )
一般来说哈希表都是用来快速判断一个元素是否出现集合里。对于哈希表,要知道哈希函数和哈希碰撞在哈希表中的作用。哈希函数是把传入的key映射到符号表的索引上。哈希碰撞处理有多个key映射到相同索引上时的情景,处理碰撞的普遍方式是拉链法和线性探测法(要多写多看,一定要养成总结的习惯,不然一下就忘记,这个博客还得再修改)
2024-05-30 18:08:50
349
原创 代码随想录Day6(● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和 )
/ 关键两步,用数组来做哈希表// 字符串中的字母都是小写字母,对应的ASCII码是连续的,既选择数组中存26个元素// 减去字符‘a’, 做对应的映射,将所有的字母出现的频率统计起来,再用另一个字符串做减法public:// 初始化数组的所有元素为0i++){ // s遍历,并做对应的映射,将所有的字母出现的频率统计// 其中 a对应hash数组下标的0,hash[0]的值是字母a出现的次数i++){ // 用t做减法i < 26;
2024-05-30 17:51:36
207
原创 Day4 链表part02(● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 02.07. 链表相交 ● 142.环形链表II ● 总结)
};*/public:= nullptr){ // 遍历的终止条件:节点数量分为奇数、偶数// 交换节点的操作1// 操作2// 操作3// 移动cur的指向,指向要反转的两个节点的前一个节点(移动两个位置)// 若想把虚拟头结点删除掉,则用result。
2024-05-30 17:35:35
408
原创 Day3 链表part01(● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 )
public:// 定义单链表节点结构体int val;// 初始化链表// 这里定义一个虚拟头结点,不是链表的头结点_size = 0;// 函数目的:获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1// 注意: index是从0开始的,第0个节点就是头结点if(indexpublic :// 定义单链表节点结构体 struct LinkedNode {int val;} };// 初始化链表 MyLinkedList() {
2024-05-30 17:16:38
709
原创 windows10下的Ubuntu18.04的双系统的安装
windows下装Ubuntu18.04的双系统作为菜鸟,照着大神们的教程装了几遍,给大家分享一下流程。(默认装好Windows10)1.【Win10上安装的软件】可在Win10上提前下载安装EasyBCD软件,用于之后开机时的双系统切换;下载安装软碟通UltraISO,用于制作安装ubuntu的U盘启动盘。下载ubuntu18.04 LTS...
2019-09-12 21:57:10
801
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人