- 博客(16)
- 收藏
- 关注
原创 【C++/STL】map和multimap的使用
本文介绍了C++ STL中的关联式容器map及其变体multimap。map基于红黑树实现,存储键值对(pair类型),键自动排序且不可修改,值可修改。与set相比,map支持通过键访问和修改值。文章详细讲解了map的构造、插入(insert)、删除(erase)和operator[]等操作,重点分析了operator[]的实现原理:通过插入缺省值并返回引用实现访问和修改。multimap与map的区别在于允许键值冗余,因此不支持operator[]操作,使用时需注意find和count的行为差异。文中通过
2025-11-06 18:22:11
1126
原创 【C++/STL】set和multiset的使用
摘要:本文介绍了STL中的set容器,它是一种关联式容器,基于红黑树实现,具有自动排序和快速查找的特性。文章详细讲解了set的构造函数、插入(insert)、查找(find)、删除(erase)等基本操作,以及与multiset的区别:set不允许重复元素而multiset允许。此外还介绍了键值对(pair)结构、upper_bound等实用方法,展示了set在数据存储和检索中的高效性。通过具体代码示例,说明了set的各种操作方法和使用场景。
2025-11-02 14:30:55
1042
原创 【数据结构】二叉搜索树
本文介绍了二叉搜索树的基本概念、实现方法和性能分析。二叉搜索树是一种有序二叉树,具有左小右大的特性,常用于实现map、set等容器。文章详细讲解了二叉搜索树的节点结构、插入、查找、删除(包括三种情况处理)、中序遍历等核心操作的实现方法,并提供了完整的C++代码示例。最后指出二叉搜索树的时间复杂度为O(N),在极端情况下性能较差,后续可通过AVL树和红黑树进行优化。
2025-10-23 12:17:39
690
原创 【C++】12.多态(超详解)
摘要: 多态是面向对象编程中"一个接口,多种实现"的特性,分为编译时多态(函数重载/模板)和运行时多态(虚函数机制)。实现运行时多态需满足:基类指针/引用调用虚函数,且子类完成虚函数重写。虚函数通过虚表(存储虚函数地址的指针数组)实现动态绑定,派生类重写会覆盖虚表对应项。特殊情况下,协变允许返回值类型差异,析构函数隐式重写需父类声明为虚函数以防内存泄漏。C++11引入override(强制重写检查)和final(禁止重写)关键字。纯虚函数(=0)定义抽象类,强制子类实现。多态原理上,静态
2025-10-11 19:00:32
833
原创 【Linux】基础指令
本文介绍了Linux操作系统的基本特性及常用指令。Linux作为开源系统,具有多用户多任务、稳定可靠、安全灵活等特点。文章详细列举了20多个常用命令,包括文件管理类(ls、cd、mkdir等)、文本查看类(cat、more、less等)、系统操作类(date、cal、find等)以及压缩传输类(zip、tar等)。每个命令都说明了语法格式、功能用途和常用选项,并特别标注了重要指令如tar的详细参数用法。最后还介绍了Tab补全、历史命令查询等实用热键操作技巧,为Linux初学者提供了全面的命令行参考指南。
2025-09-28 19:20:31
1004
原创 【C++】11.继承(超详解)
摘要:本文系统介绍了C++继承机制,包括继承定义格式、访问权限控制、赋值兼容转换、作用域规则等核心概念。重点分析了派生类默认成员函数的实现要点,以及多继承中的菱形继承问题及其解决方案(虚继承)。同时对比了继承(is-a)与组合(has-a)两种代码复用方式的区别与适用场景,建议优先使用耦合度更低的组合方式。最后强调应避免设计菱形组合结构,以维护代码的封装性和可维护性。
2025-09-18 21:49:52
1229
原创 【C++入门】10. priority_queue的优先队列
priority_queue是 C++ 标准模板库(STL)中的容器适配器,用于实现优先队列这一特殊数据结构。优先队列中的元素会按照优先级排序,每次取出的都是优先级最高的元素,它的底层实现通常采用堆(heap)数据结构。在 C++ 中,模板类定义在**queue** 头文件中。我们可以通过指定元素类型和比较函数(如函数指针、函数对象或 Lambda 表达式),来创建不同排序规则的优先队列。
2025-09-14 15:48:39
361
原创 【C++入门】9.C++ stack和queue的介绍和使用
stack(栈)是一种容器适配器,专门用在 “后进先出”的场景里,元素的插入和提取只能在容器的一端进行。stack 这种容器适配器,是把某个特定的类封装起来当作底层容器,还提供一组专门的函数来访问里面的元素。它把特定类当作底层元素,往特定容器的尾部(也就是栈顶)进行压入和弹出操作。empty:判断容器是否为空的操作back:获取容器尾部元素的操作push_back:往容器尾部插入元素的操作pop_back:从容器尾部删除元素的操作。
2025-09-13 19:43:54
970
原创 【C++入门】8.C++ list的模拟实现
本文深入讲解了C++中list容器的底层实现原理。首先介绍了list的底层结构是带头双向循环链表,并展示了结点类的实现。重点分析了迭代器的设计思想,解释了为什么list需要自定义迭代器类而非原生指针,并详细实现了迭代器的运算符重载功能。随后详细讲解了list类的构造函数、拷贝构造、析构函数等核心成员函数的实现,以及迭代器相关的begin/end、rbegin/rend等操作。最后介绍了list的增删查改操作,包括insert、erase、push_back等函数的实现细节,并强调了迭代器失效问题。文章通过代
2025-09-07 16:10:51
724
原创 【C++入门】7.C++ vector的常见用法( 快速解析 )
本文介绍了C++中vector容器的基本使用。vector是一种动态数组,支持自动扩容,比传统数组更灵活。文章详细讲解了vector的定义方式、初始化方法(包括花括号和圆括号赋值)、四种遍历方式([]操作符、at函数、迭代器、范围for循环)。重点介绍了vector的常见操作:push_back/pop_back尾部增删元素、insert/erase插入删除元素、swap交换容器内容、find查找元素等。每种操作都配有代码示例和效果展示图,帮助理解vector的实际应用场景。文章适合有string基础的C+
2025-08-16 16:34:20
1075
原创 【C++入门】6.string(下篇)
本文继续完善C++ string类相关内容,主要涵盖数据查找、运算符重载和部分函数实现三部分。在数据查找方面,介绍了c_str()、copy()、find()、rfind()、find_first_of()、substr()和compare()等常用方法及其功能说明。运算符重载部分讲解了getline()函数和关系运算符的使用。最后展示了一些关键成员函数如reserve()、insert()和erase()的实现代码片段。这些内容有助于深入理解C++ string类的底层实现和使用方法。
2025-08-14 17:20:48
1000
原创 【C++入门】5.string(上篇)
C 语言中,字符串是以 ‘\0’ 结尾的一些字符的集合,为了操作方便,C 标准库中提供了一些 str 系列的库函数,但是这些库函数与字符串是分离开的,不太符合 OOP 的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。C++ 中将 string 封装为单独的类,string 类是 C++ 标准库中的一个非常重要的类,用于表示和操作字符串。
2025-08-09 20:23:07
1073
原创 【C++入门】4.内存管理和模版
● new的原理调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造● delete的原理在空间上执行析构函数,完成对象中资源的清理工作调用operator delete函数释放对象的空间● new T[N]的原理调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请在申请的空间上执行N次构造函数● delete[]的原理。
2025-08-04 20:33:35
1132
原创 【C++入门】3.类和对象(下篇)
C++类与对象进阶知识摘要(149字): 本文介绍了C++中类与对象相关的7个重要特性:1.初始化列表的语法规则与注意事项,强调引用/const成员必须在此初始化;2.类型转换机制,支持内置类型隐式转换为类对象;3.static成员的初始化要求与访问限制;4.友元函数/类的声明方式与单向性特点;5.内部类作为独立类的封装特性;6.匿名对象的生命周期与应用场景;7.编译器对对象拷贝的优化策略。其中重点说明了初始化列表的优先级高于缺省值,静态成员需类外初始化,以及友元关系的不可传递性等关键细节。
2025-07-25 19:53:28
1008
原创 【C++入门】2.类和对象(上篇)
本文介绍了C++类的核心概念,包括类的定义格式、访问限定符、类域等基础语法,重点讲解了类实例化、this指针原理以及5种默认成员函数。类定义使用class关键字,通过访问限定符控制成员可见性;类实例化时才会分配内存空间,对象大小遵循内存对齐规则;this指针是编译器自动添加的隐含参数,指向当前对象。5种默认成员函数包括:构造函数(初始化对象)、析构函数(资源清理)、拷贝构造函数(对象复制)、赋值运算符重载(对象赋值)以及取地址运算符重载,其中前4种在实际开发中经常需要自定义实现。
2025-07-15 16:35:50
1085
原创 【C++入门】1.初识C++
大家好,这是我第一次写博客, 希望通过写博客的方式巩固我学习的内容。当然,如果能给大家带来一些收获那更好。这一篇内容是C++的入门学习,本节内容不会很难,大部分是关于引入,后续关于C++的学习难度将会持续上升,所以我们要打好基础,为后面做准备。首先我们要了解C++的历史,可以说C++是C语言的升级版,本贾尼博士在使用C语言的过程中,由于在一些功能使用上的不方便,从而进行修改,完善,从而创造了C++,C++兼容C语言的绝大多数语法,下面我们要写第一个C++程序了。
2025-05-02 22:50:02
1008
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅