
笔记
文章平均质量分 87
programing菜鸟
喜欢C/C++, Linux,数据结构的朋友们可以关注我,不会让你失望的。
展开
-
CMake入门
CMake原创 2022-07-31 20:42:08 · 594 阅读 · 0 评论 -
EffectiveC++条款26
26,尽可能延缓变量的定义时间当我们定义一个对象,就要承担构造函数的成本。当我们销毁该对象,就要承担对应的析构函数的成本。你可能会说,我定义一个变量,怎么会不使用呢?(我也是这样想的。)但总会有特殊情况。延缓变量定义时间考虑下面的代码:class Solution{public: void test(int lenth){ using namespace std; vector<int> v(5); if(lenth < 0){ throw exce原创 2021-12-09 17:41:57 · 828 阅读 · 0 评论 -
再谈operator new && operator delete
目录前言void* operator new(size_t)void operator delete (void*)void* operator new(size_t ,const std::nothrow_t&)void operator delete (void*, const std::nothrow_t&)void* operator new(size_t, void*)void operator delete (void*, void*)前言一开始我发现了一道关于定位new(p原创 2021-12-08 20:06:40 · 2268 阅读 · 0 评论 -
哈希 && 模拟实现 unordered_set,unordered_map
文章目录什么是哈希一、哈希函数1.直接法2.余数法解决哈希冲突的方法1, 闭散列表2 ,开散列表什么是哈希提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、哈希函数1.直接法没有哈希冲突,每个key有一个唯一的位置。But,可能会浪费大量空间。2.余数法节省空间,but有哈希冲突data = pd.read_csv( .原创 2021-08-17 22:18:30 · 252 阅读 · 5 评论 -
C++实现红黑树 && 模拟实现set,map
文章目录前言红黑树的调整前言红黑树是一棵平衡二叉搜索树,它的“平衡”虽不及AVLTree,但是它的效率跟AVLTree差不多。而STL中的map和set底层就是封装了一棵红黑树。红黑树的调整原创 2021-08-14 17:17:15 · 854 阅读 · 0 评论 -
特殊类设计与单例模式
文章目录前言只能在堆上创建对象的类只能在栈上创建对象的类单例模式懒汉模式和饿汉模式的区别单例模式的delete前言计算机语言具有强大的自由度,而C++更甚。一个程序员可以不受限制的发挥自己的才能,只要符合语法语义。而经过许多年的积累,发现了一些通用的设计,这篇博客简单来说一说几个设计。使用的是C++语言。只能在堆上创建对象的类想象一下,一个类怎样才能只在堆上创建对象呢?我们的做法是用private修饰构造函数,然后再提供另外的接口来供创建对象。而这个接口只能产生堆上的对象。想一想还有没有什么漏洞.原创 2021-08-08 19:25:43 · 202 阅读 · 0 评论 -
略解AVL树
文章目录一、What is AVL树二、insert1.引入库2.读入数据三,erase一、What is AVL树AVL树是一棵平衡的二叉搜索树,满足二叉搜索树的一切性质。不懂什么是二叉搜索树的同学们可以看我以前的博客,(二叉搜索树)我们知道搜索树的搜索是非常优秀的,时间复杂度是O(logN),那么AVL树还有什么额外的作用吗?考虑这样一种情况:如果插入的结点的值是有序的,或者是接近有序的呢? 那么搜索树的效率就会退化成O(logN),为了解决这个问题,AVL树应运而生。,AVL树得名于它的.原创 2021-07-19 21:17:21 · 200 阅读 · 0 评论 -
STL下的iterator traits
文章目录前言迭代器相应型别(associated types)模板特化value_typedifference_typereferencepointeriterator_categoryadvanced()为例为什么代表迭代器类型的class使用继承std::iterator 的保证完整代码重列前言迭代器就是所谓泛型指针,《Design Patterns》一书中将迭代器定义为:提供一种方法,使之能依序遍历某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。面向对象设计推崇将算法封装.原创 2021-07-14 20:37:28 · 574 阅读 · 0 评论 -
STL 之 List简析
文章目录前言list介绍list的节点list的迭代器SGI迭代器VS下的迭代器的不同之处list整体结构list的成员方法前言记得我的一位老师说过,好的结构一定会有好的结果。C++的STL是数据结构与算法的集大成者,而其中的list就是典型代表。现在我手中有三种源码,分别是侯捷老师名著中用到的经典的SGI版本,VS下的版本,以及SGI的比较新的版本(实际上就是GCC编译器使用的新版本)。本人实力有限,只能解释一部分内容。list介绍list,也就是所谓的链表,是一个节点一个节点通过指连.原创 2021-07-13 11:37:36 · 771 阅读 · 0 评论 -
C++ vector实现
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings.原创 2021-07-12 10:19:36 · 2330 阅读 · 1 评论 -
C++string的实现
文章目录前言一、string类的特点二、string类的常用接口2.1 4大默认成员函数2.2 容量操作:2.3 string类对象的访问及遍历操作2.4 string类对象的修改操作2.5 判断的接口2.6 string类非成员函数三、string类的实现3.1 考虑成员变量该有什么3.1.1 为什么使用size_t3.2 4大默认成员函数的实现3.2.1 几个错误&&深浅拷贝3.2.2 拷贝构造和赋值现代写法3.2.3 C++11 noexcept, 移动构造和移动赋值3.原创 2021-07-03 10:36:05 · 4930 阅读 · 2 评论 -
C++模板
文章目录前言一、模板初阶1.1、函数模板1.2、隐式实例化 && 显式实例化1.3 模板参数的匹配原则1.4、类模板二、模板进阶2.1 非类型模板参数2.2 模板的特化2.3 模板的分离编译前言C++的每一个feature都有它的理由。在C语言中,我们如何实现两个数的交换呢?我们写如下函数:void swap1(int* p1, int* p2){ int tmp = *p1; *p1 = *p2; *p2 = tmp; }但是,我没说是交换什么类型的数。如果我说交.原创 2021-07-02 04:20:47 · 781 阅读 · 0 评论 -
C++内存管理
文章目录前言一个题目malloc && calloc && reallocC++的动态管理前言C++是很灵活的一种语言,它允许程序员自己决定变量创建的位置,可以在堆上,栈上,静态区,常量区,这虽然给我们带来了学习负担,但也使我们更能领悟C++的优势所在。一个题目我们先来看看各种常见变量的内存分布。int globalVal = 1;static int staticGlobalVal = 1;void Test(){ static int stati.原创 2021-07-01 21:37:17 · 120 阅读 · 0 评论 -
C++类型转换
文章目录前言,C中的类型转换一、static_cast二、reinterpret_cast三、const_cast四、dynamic_cast五,explicit前言,C中的类型转换在C语言中你可能会看到这样的操作,int i = 0;double d = 2.22;i = d;我们把这种操作叫做类型转换,因为变量d和i的类型不相同,当你编译时,编译器会提醒你可能会发生数据丢失,因为相比int,double是更高的精度,但仅仅是个warning,谁关心呢?但如果你写出下面这样的代码,那么编.原创 2021-07-01 02:07:07 · 207 阅读 · 0 评论 -
C++11
文章目录1, C++11简介2 ,列表初始化3,变量类型推导 RTTI3.1 auto3.2 decltype4,范围for循环5,final与override6,智能指针7,新增加容器 静态数组array,forward_list,和哈希8,默认成员函数控制9,右值引用10,lambda表达式11,线程库1, C++11简介2 ,列表初始化3,变量类型推导 RTTI3.1 autoauto推导出来的对象和普通对象没有任何区别auto不能作为形参和返回值auto func(auto l.原创 2021-06-24 14:07:53 · 335 阅读 · 0 评论 -
二叉搜索树全面解析
文章目录二叉搜索树介绍一、insert二、erase三,find四,中序遍历二叉搜索树介绍提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、insert示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、erase三,find提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本.原创 2021-06-04 17:00:29 · 694 阅读 · 0 评论 -
C++ map的使用
文章目录map一、insert(1) pair二、erase && find1.erasefind三, operator[]mapmap虽然翻译过来是图,但是底层是一颗红黑树。一、insertmap是一个模板类,有两个模板参数,分别对应key和value,习惯性成为键值对。我们这样定义一个map,#include <iostream>using namespace std;//map在stl中,所以这两句必不可少int main(){ map<in原创 2021-06-03 12:47:49 · 3490 阅读 · 0 评论 -
C++ 多态 超详细讲解
文章目录多态概念引入1、C++中多态的实现1.1 多态的构成条件1.2 虚函数1.3虚函数的重写1.4 C++11 override && final1.5 重载,覆盖(重写),重定义(隐藏)2、抽象类2.1 抽象类的概念2.2 接口继承和实现继承3、 多态的原理3.1 虚函数表3.2多态的原理3.3动态绑定与静态绑定4 、继承中的虚函数表4.1 单继承中的虚函数表4.2 多继承中的虚函数表other 一些有意思的题目多态概念引入多态字面意思就是多种形态。我们先来想一想在日常生活中原创 2021-05-18 23:16:00 · 57297 阅读 · 33 评论 -
C++ 继承
文章目录前言一、继承概念二、基类和派生类之间的赋值三、继承中的作用域四、子类的几个默认成员函数五、友元函数和继承六、static成员变量和继承七、多继承和菱形继承八、继承和组合前言C++作为一种面向对象语言,自然拥有面向对象的三大特征,这篇博客主要介绍一下C++的继承。一、继承概念继承这个词语在我们生活中也很常见,继承皇位,继承财产之类的,意思就是把别人的东西拿过来作为自己的,而在C++中,继承也是差不多的意思。想象有这样一个场景,我需要一个老师的类,和一个学生的类,这两个类确实有很多.原创 2021-05-14 00:26:11 · 429 阅读 · 5 评论 -
整型提升--大小端--结构体对齐
文章目录前言一、整型提升引入二、使用步骤1.引入库2.读入数据总结前言本文介绍一些C语言的知识点,都是比较令人疑惑的。一、整型提升引入我相信这也是很多C语言新手疑惑的问题,整型和char型进行运算,究竟满足什么规则?char型和char型能不能相加减?如果能,那么编译器是怎么运算的?int a = 1;char b = 1;int c = a + b;//这里的c等于多少呢?char a = 1,b = -2,c;c = a + b;//这里的c等于多少呢?要解决这几个问题,原创 2021-04-21 22:37:16 · 424 阅读 · 0 评论 -
C++一些小的知识点
缺省参数在C++中,允许带参函数在调用的时候不传参。#include <iostream>using namespace std;void Add(int a = 1, int b = 2)这就是缺省参数 { int c = a + b; }int main(){ Add();}像上面的Add函数,我可以不传参数过去仍然可以调用,因为它它的参数有备用值,而算出来的c就是3。我还可以这样Add(2);//这样的话就是第二个缺省参数起效果,c算出来是4.Ad原创 2021-04-09 23:08:46 · 372 阅读 · 0 评论