c++
文章平均质量分 71
c++个人学习笔记
机械狗pp
这个作者很懒,什么都没留下…
展开
-
特殊类设计、单例模式
特殊类的设计及单例模式简单总结原创 2022-07-10 12:44:42 · 358 阅读 · 0 评论 -
智能指针简单模拟实现
智能指针简单总结原创 2022-07-08 09:58:39 · 530 阅读 · 0 评论 -
右值引用及移动语义
右值引用、在移动构造和移动赋值的应用原创 2022-06-07 11:02:34 · 318 阅读 · 0 评论 -
unordered_set和unordered_map模拟实现
目录1 哈希表实现1.1 字符串处理1.2 节点1.3 迭代器1.4 表2 unordered_map3 unordered_set1 哈希表实现采用开散列哈希表,映射方法为除留余数法。1.1 字符串处理使用仿函数对字符串类型的值转换为可以取余的整数。 template<class K> struct Hash { size_t operator()(const K& key) { return key;...原创 2022-05-30 12:12:57 · 151 阅读 · 0 评论 -
C++ -- extern “C“ 用法
目录一、extern "C"是什么?二、用法展示1.创建静态库2.在c++文件中调c的静态库代码3.在C文件中调c++的静态库代码总结一、extern "C"是什么?extern "C"是为了在c++中兼容c代码,表示extern "C"代码中是标准的c 语言代码,要用c的编译器来编译,而不是用c++的编译器来编译二、用法展示1.创建静态库创建一个空项目,我这里命名为DS,然后在属性>>常规中把配置类型改成静态库类...原创 2021-12-01 20:11:50 · 2542 阅读 · 0 评论 -
C++ - 初始化列表、友元、static成员
目录一、初始化列表二、static成员三、友元一、初始化列表初始化列表写在构造函数参数下面,用冒号开始,逗号分隔,每一个成员属性后用括号内的参数进行初始化。class Date{public: Date(int year, int month, int day) : _year(year) , _month(month) , _day(day) {} private: int _year...原创 2022-01-20 21:55:22 · 431 阅读 · 0 评论 -
C++ - 类中默认成员函数
目录一、默认构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、取地址及const取地址操作符重载一、默认构造函数构造函数名字与类名相同,并且没有返回值。创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。class Date{public : // 1.无参构造函数 Date () {} // 2.带参构造函数 Date (int yea...原创 2022-01-17 22:51:47 · 216 阅读 · 0 评论 -
C++ -- 引用
文章目录一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('igno原创 2021-12-01 17:06:13 · 889 阅读 · 0 评论 -
C++ - this指针用法
this指针总结原创 2022-01-16 10:44:43 · 4881 阅读 · 0 评论 -
C++ - 多态
目录一、定义及实现1.1 多态条件1.2 虚函数1.3 虚函数重写1.3.1协变1.3.2 析构函数重写1.4 final1.5 override二、抽象类2.1 纯虚函数三、多态原理四、单继承和多继承中的虚表一、定义及实现多态就是执行某项行为,不同的对象去执行会有不同的状态。之前的函数重载(静态多态)就是一种多态。1.1 多态条件1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派...原创 2022-04-08 20:51:55 · 848 阅读 · 0 评论 -
C++ - 继承
目录一、概念二、继承方式三、切片四、继承中的作用域五、子类中的默认成员函数六、继承中的友元和静态成员七、菱形继承八、虚继承总结一、概念 类的继承简单来说就是类的复用,类似函数复用,减少了代码量。一般是公共部分作为父类,继承该父类的子类都是作为父类的拓展。如下,一个老师和学生都是一个人,那么我们就可以先设置一个人类,然后老师类和学生类继承人类就行了。class person{protected: string _name; int...原创 2022-04-01 16:47:04 · 848 阅读 · 0 评论 -
C++ - vector简单模拟实现
目录一、整体框架二、构造和析构函数1.无参构造2.迭代器区间构造3.拷贝构造4.赋值5.析构三、大小和容量相关函数1.大小和容量2.reserve3.resize四、插入和删除1.尾插2.尾删3.插入4.删除一、整体框架 template<class T> class vector { public: // Vector的迭代器是一个原生指针 typedef T原创 2022-03-14 15:55:55 · 1096 阅读 · 0 评论 -
C++ - string简单模拟实现
目录一、整体结构二、普通构造三、析构函数四、拷贝构造 1.深拷贝与浅拷贝2.写法一3.写法二五、赋值1.写法一2.写法二一、整体结构 本文只简单实现string函数的构造、析构、赋值,因此成员变量只需要一个字符指针。如果要完整的实现string类,还需要设置成员变量size、capacity。class string { public: string(const char* str = ""); string(con...原创 2022-03-01 16:32:58 · 556 阅读 · 0 评论 -
C++ - 模板
目录一、模板概述1.为什么要用模板2.模板的形式3、模板匹配原则二、类模板1.类模板形式2.类模板实例化三、非参数类型模板四、模板的特化1.全特化2.偏特化2.1部分特化2.2对参数进行进一步限制一、模板概述1.为什么要用模板有一些类和函数复用时仅仅只有数据类型是不同,其代码几乎完全相同,如下图我们写一个返回和的函数。如果是int型参数调第一个,浮点型调第二个。其他类型就要再写一个相应的重载函数。为此我们可以使用一个模板来做...原创 2022-02-20 11:07:24 · 126 阅读 · 0 评论 -
C++ - list简单实现
目录一、整体框架二、节点类三、迭代器类四、list类1.构造与析构 1.1普通构造 1.2迭代器区间构造1.3拷贝构造与赋值1.4析构2.迭代器指针、头尾数据3.容量4.插入和删除一、整体框架 总共可分为节点类,迭代器类和list类三大块。 // List的节点类 template<class T> struct ListNode { ListNode(c...原创 2022-03-16 18:48:05 · 1983 阅读 · 0 评论 -
C++ - priority_queue
目录一、介绍二、仿函数三、priority_queue实现1.构造2.插入和删除3.剩余接口四、完整代码一、介绍priority_queue叫做优先级队列,适配容器是vector。其实就是数据结构中的堆,默认是大堆。若需要小堆,则需要修改模板中的仿函数类型。template<class T,class Container = vector<T>,class Compare = less<T>>二、仿函数...原创 2022-03-27 11:06:18 · 3151 阅读 · 0 评论 -
简单实现map和set
一、红黑树1 红黑树迭代器难点是Increament和DeIncreament函数,用来实现迭代器的加加减减。下面讲解一下Increament的思路,DeIncreament思路与其大致思路相同,不过就是一个相反的关系。 红黑树按照中序遍历,当前节点加加就应该要到当前节点的右子树找最左节点,但是右节点有可能为null。因此就需要分右节点是否为空两种情况。 当右节点不为空,到右子树找最左节点。当右节点为空,说明以该节点为根的子树已经遍历完了,向上找父...原创 2022-05-17 16:30:08 · 283 阅读 · 0 评论 -
C++ - stack和queue模拟实现
目录一、容器适配器1.deque二.stack实现三、queue实现一、容器适配器由数据结构的学习可知,栈可以用顺序表或者链表实现,队列可以用链表实现。由于stl已经存在了vector和list类,于是利用这两个容器作类模板就能更方便地来实现stack和queue容器。同时这样使用其他容器作类模板的模板就叫做容器适配器。template<class T,class Container = deque<T>>1.dequedeque...原创 2022-03-27 09:09:37 · 1353 阅读 · 0 评论