
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在我们桌面上的图标只是一个快捷方式,它真正的运行路径是在其他的磁盘中。我们的Linux系统中也存在类似的形式,在Linux中的链接形式有两种,一种叫做软链接,一种叫做硬连接。并且他们的inode号不一样。由上面接口可以知道,我们新建的硬链接文件,只是给源文件起了一个别名,他们共用同一个inode号。:对原文件删除,会导致软链接不可用,因为软连接存储是路径,而硬链接不受影响。3、然后通过inode表

单例模式的本质是类 + 静态实例 + 静态访问方法,并通过:私有构造函数避免外部实例化。删除拷贝构造与赋值运算符,防止复制。使用局部静态实例,实现延迟初始化和线程安全。虽然完全可以用命名空间实现类似功能,但使用单例类能够更好地组织全局状态,并支持类的特性和面向对象扩展。

有时候我们需要更复杂的排序逻辑,这时可以传入一个自定义比较函数(函数指针、函数对象或 Lambda 表达式)。例如,让数字1// a==1 时排在 b 之后// b==1 时排在 a 之前// 其他情况正常升序});// 输出:2 3 4 5 1注意:比较函数必须返回bool,且要满足严格弱序关系(Strict Weak Ordering),否则结果可能是未定义的。std::sort是 C++ 排

是连续内存数组,size 和 capacity 分开管理push_back会触发扩容和拷贝,性能可能下降reserve()→ 减少扩容次数→ 避免临时对象拷贝遍历尽量使用引用传参用const引用通过这些优化,vector可以在保证简洁代码的同时,接近手写数组的性能。

在学习 C++ 的过程中,函数指针常常让人觉得“古老又晦涩”。这样,我们就可以在运行时决定到底调用哪个函数,从而让代码更灵活。本文会结合实例代码,从函数指针讲到 Lambda 和,最后总结适用场景。

std::any的设计目标是让 C++ 拥有类似动态语言的灵活性但它并不是为通用场景准备的万能解法。结论:当你确实无法预知类型时(如反射、通用容器、脚本接口),使用std::any。当类型可预测或有限时,优先选择,性能更高、类型更安全。

是 C++17 引入的一个极其强大的类型工具,它本质上是受控的多态,让你能安全、清晰地表达“一个对象可能是几种类型之一”的概念。操作功能定义多类型容器获取指定类型的值(类型不匹配则抛异常)获取指定类型的指针(类型不匹配返回空)v.index()当前存储类型索引对当前存储类型执行函数定义“空状态”类型错误访问异常。

相较于Array(静态数组),Vector的最大特点就是动态扩容。我们无需在创建时指定固定容量,可以在运行时以O(1)的摊销复杂度不断地向尾部插入元素,同时仍然保持随机访问的 O(1) 时间复杂度。阶段功能关键技术基础版动态扩容普通new[]Move版高效移动移动语义std::moveEmplace版原地构造最终版完整内存控制+ 手动析构至此,我们完成了一个功能齐全的简易版。

/ 降序排列// 输出 3 2 1operator==(判断两个键是否相等)哈希函数(生成哈希值)int a, b;必须同时定义operator==与哈希函数,否则无法正确区分相同键。int a, b;容器优点缺点典型用途std::set自动排序,稳定迭代器插入删除较慢排序集合、范围查询查找插入快,空间效率高无序,迭代器易失效快速查找、去重操作。

std::list和都是 C++ STL 中的链表容器,用于存储动态大小的元素集合。特性std::list链表类型双向链表单向链表插入/删除效率任意位置 O(1)任意位置 O(1)随机访问不支持不支持内存占用较高(每个节点包含前后指针)较低(仅有后继指针)适用场景需要频繁中间插入/删除内存敏感且仅需单向遍历容器优点缺点适用场景std::list插入/删除高效,支持双向遍历内存占用高,不支持随机访问








