![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++日常笔记
文章平均质量分 72
C++的日常生活
sakeww
这个作者很懒,什么都没留下…
展开
-
C++类型转换相关内容整理分析
C++类型转换相关内容整理分析原创 2022-07-08 21:43:00 · 161 阅读 · 2 评论 -
C++特殊类设计
C++特殊类设计原创 2022-07-08 17:18:58 · 211 阅读 · 2 评论 -
C++智能指针相关内容整理分析
C++智能指针原创 2022-07-07 19:39:59 · 107 阅读 · 2 评论 -
C++异常相关内容整理分析
C++异常相关内容简单整理分析原创 2022-07-06 15:32:34 · 343 阅读 · 10 评论 -
C++11简单介绍
C++11原创 2022-07-05 18:23:31 · 2677 阅读 · 4 评论 -
C++下“哈希”,“位图”,“布隆过滤器”的简单介绍
区别:1.unordered_XXX 遍历不按key排序,命名体现2.unordered_XXX单向迭代器3.unordered_XXX综合效率略胜map和set数据重复量比较多的时候,unordered_set更好重复量比较少的时候,有序的时候,set比较好链接: C++下“hash“的简单模拟实现以及实现中遇见的问题给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。解决:位图概念所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的原创 2022-06-06 10:16:48 · 121 阅读 · 3 评论 -
C++下“hash“的简单模拟实现以及实现中遇见的问题
引入:当线性探测和二次探测中,列表中的值满了,或者将近满的时候,会导致效率降低问题:哈希表什么情况下进行扩容?如何扩容?散列表的载荷因子定义为:α=填入表中的元素个数/散列表的长度α 是散列表装满程度的标志因子,由于表长是定值,α与“填入表中的元素个数”成正比,所以α越大,表明填入表中的元素越多,产生冲突的可能性就越大;反之,α越小,表明填入表中的元素越少,产生冲突的可能性就越小,实际上,散列表的平均查找长度是载荷因子的α的函数,只是不同处理冲突的方法有不同的函数。对于开放定址法,载荷因子是特别重要原创 2022-06-06 10:11:33 · 386 阅读 · 1 评论 -
C++中“map和set”相关内容整理分析
目录1. 关联式容器2. 键值对3. 树形结构的关联式容器set 和 map简单使用:set简单使用inserterasevs multisetfinderasemap的简单使用insert4. 底层结构5. 作业1. 关联式容器STL将自己的数据结构分为六大组件,容器分为:序列式容器:vector list …类似于数据结构中的线性表,数据和数据之间没有关联,为了单纯的存储数据,关联式容器:map和set…底层是:平衡搜索树,数据和数据之间具有强烈的关系2. 键值对3. 树形结构的关联式原创 2022-06-02 21:47:50 · 242 阅读 · 7 评论 -
C++下“红黑树”的简单模拟实现以及实现中遇见的问题
目录原理:原理:原创 2022-06-02 21:23:38 · 170 阅读 · 4 评论 -
C++中“AVL”树的模拟实现以及实现中遇见的问题
目录insertinsert1.curparent->left parent–;2.curparent->right parent++:3.更新以后,parent->bf0,更新结束。说明:更新前parent->bf 是1或者-1,现在变成0,说明填上矮的那边,parent所在的子树高度不变4.更新之后,parent->bf1/-1 继续往上更新。说明:更新前,parent->bf 是0,现在变成1或者-1,我有一边变高了,parent所在的子树高度变了5原创 2022-05-29 14:42:19 · 210 阅读 · 9 评论 -
C++“二叉树进阶”相关内容整理分析
目录1.二叉搜索树1.1概念:1.2 二叉搜索树操作1.3 二叉搜索树的实现1.二叉搜索树1.1概念:二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树图例:int a [] = {5,3,4,1,7,8,2,6,0,9};时间复杂度:查找一个数时,最多查找:高度次(这个树比较均衡的情况下)1.2 二叉搜索树操原创 2022-05-14 21:46:15 · 108 阅读 · 3 评论 -
C++二叉搜索树的模拟实现以及实现中常见的问题
目录需要访问私有节点的另外一种方法需要访问私有节点的另外一种方法我们在写完中序遍历后,我们要调用这个函数的时候我们需要调用这个函数并且需要传递根节点但是C++的成员(根节点)一般是私有的,拿不到这个节点两种方法:1.实现一个getroot函数,这样就可以直接访问到根节点2.直接套用一层,写一个子函数 void InOrder() { _InOrder(_root); } void _InOrder(Node* root) { .....//实现请看后面 }..原创 2022-05-14 09:47:47 · 98 阅读 · 0 评论 -
C++“多态”相关内容整理分析
目录1. 多态的概念2. 多态的定义及实现3. 抽象类4. 多态的原理5. 单继承和多继承关系中的虚函数表6. 继承和多态常见的面试问题1. 多态的概念// 静态的多态:函数重载,看起来调用同一个函数有不同行为。静态:编译时实现的int main(){ int i = 1; double d = 3.14; cout << i;//cou.operator<<(int); cout << d;//cou.operator<<(double);原创 2022-04-17 18:06:05 · 1031 阅读 · 2 评论 -
C++中的“继承”相关内容整理分析
目录1.继承的概念及定义1.1继承的概念1.2继承定义1.2.1定义格式2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继承的总结和反思9.笔试面试题1.继承的概念及定义1.1继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过原创 2022-04-10 09:53:06 · 403 阅读 · 17 评论 -
C++“IO流”相关内容整理总结
目录1. C语言的输入与输出2. 流是什么3. C++IO流4. stringstream的简单介绍1. C语言的输入与输出int main(){ int i = 1; double d = 2.222; //下面的cout是调用了两个不同的函数 cout << i;// ->cout.operator<<(i); cout << d;// ->cout.operator<<(d); //可以理解为 内存里的i流向了cout原创 2022-04-06 20:58:08 · 810 阅读 · 15 评论 -
C++“模板进阶”相关内容整理分析
1.priority_queue模拟实现代码namespace sakeww{ //普通模式 template<class T> struct Less//Less->仿函数 less就叫函数对象 { bool operator()(const T& x, const T& y) const { return x < y; } }; template<class T> struct Greater { bool原创 2022-04-01 16:46:23 · 730 阅读 · 3 评论 -
priority_queue模拟实现代码C++
代码:namespace sakeww{ //普通模式 template<class T> struct Less//Less->仿函数 less就叫函数对象 { bool operator()(const T& x, const T& y) const { return x < y; } }; template<class T> struct Greater { bool operator()(const T&原创 2022-04-01 16:38:02 · 913 阅读 · 0 评论 -
stack和queue的模拟实现和实现中遇见的一问题C++
目录1.适配器1.什么是适配器2.缺省值3.当第二个参数是一些别的容器的时候4.简单介绍deque5.代码:1.适配器1.什么是适配器适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。对于stack我们可以使用适配器使得其中的val可以为任何值例如:vectorstringlist2.缺省值引入:我们在正常调用stack时,我们是:stack<int> s;但是原创 2022-03-25 18:38:30 · 1385 阅读 · 5 评论 -
List的模拟实现和实现中遇见的一些问题C++
目录1.迭代器和原生指针的区别2.拷贝构造,析构和赋值重载是否需要我们自己实现?3.list中的const的模拟实现4.->的相关问题1.迭代器和原生指针的区别 void f() { Node* pnode = _head->_next; iterator it = _head->_next; *pnode; *it; ++pnode; ++it; }Node*原生指针和一个迭代器对象,他们占用空间是一样大的,都是4byte并且存的原创 2022-03-24 19:36:17 · 1491 阅读 · 6 评论 -
vector的简单模拟实现和实现中遇到的一些问题C++
目录push_back中的位置确定顺序问题代码:问题分析:修改后的代码:注意:最终代码和我们遇见的问题会有出入,哪怕是修改后的代码都是有出入的问题原因:复用,简化。push_back中的位置确定顺序问题代码: void push_back(const T& x) { if (_finish == _endofstorage) { //扩容 size_t newCapacity = capacity() == 0 ? 4 : capacity() * 2;原创 2022-03-13 12:12:02 · 1736 阅读 · 15 评论 -
string类相关内容整理C++
目录1. 为什么要学习string类2. 标准库中的string类3. string类的模拟实现4. 扩展阅读1. 为什么要学习string类C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问2. 标准库中的string类3. string类的模拟实现4. 扩展阅读...原创 2022-03-04 18:21:16 · 250 阅读 · 14 评论 -
C++中string的模拟实现和其中的一些问题
目录1.深浅拷贝问题问题代码:问题和解答:解决:2.=问题代码:问题与解答:解决:3.定义空string问题代码:问题与解答:解决:4.范围for问题注意:问题代码和问题解决代码和最终的代码可能有区别,问题代码以反应问题为主最终代码以最终实现为主1.深浅拷贝问题问题代码://C++标准库命名空间最大的意义,解决定义一个和库函数名字一样的类也是可以的namespace sakeww{ class string { public: string(const char* str)原创 2022-03-04 18:00:15 · 488 阅读 · 4 评论 -
C++中string重要函数示例
目录1.遍历加修改2.反向迭代器:rbegin() 和 rend()3.const 迭代器4.增容5.reserve申请至少具体数值的容量6.resize 开空间,对这些空间给一个初始值,进行初始化7.c_str8.查 find9.插入insert10.删除11.compare12.stoi13.to_string1.遍历加修改void test_string1(){ string s1("hello world"); //1.下标加[] for (size_t i = 0; i <原创 2022-02-27 15:36:40 · 385 阅读 · 11 评论 -
模板初阶相关内容整理C++
目录1. 泛型编程2. 函数模板概念:函数模板格式:函数模板的原理函数模板的实例化隐式实例化:让编译器根据实参推演模板参数的实际类型显式实例化:在函数名后的<>中指定模板参数的实际类型模板参数的匹配原则3. 类模板4.关于函数模板的一个小测试1. 泛型编程泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础2. 函数模板概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。函数模板格式:templat原创 2022-02-21 18:27:14 · 124 阅读 · 21 评论 -
C/C++内存管理知识点整理
目录1. C/C++内存分布2. C语言中动态内存管理方式3. C++中动态内存管理4. operator new与operator delete函数5. new和delete的实现原理6. 定位new表达式(placement-new)7. 常见面试题1. C/C++内存分布【说明】栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(Linux课程如果没学到这块,现原创 2022-02-20 18:46:08 · 158 阅读 · 7 评论 -
面向过程和面向对象的初步认识(用通俗的话理解)
1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。c语言是面向过程的c++是在c语言的基础上增加面向对象的思想所以c++是基于面向对象的(既有面向过程,也有面向对象,因为c++要兼容c语言)扩展:java是一门纯面向对象的语言面向过程和面向对象不是一门编程语言,而是一种解决问题的思路例如:洗衣服父母辈:1.取脏衣服 2.拿一个水盆 3.拿洗原创 2021-03-28 11:42:18 · 352 阅读 · 0 评论 -
如何定义一个类呢?---C++
类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。类的两种定义方式:声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。#include <iostream>using namespace std;//定义一类//方式一:将成员函数在类内来进行定义struct Student{ //结构体中的变量 char _name[20]; char _gender[3]; int _原创 2021-04-05 09:26:21 · 1932 阅读 · 0 评论 -
类的访问限定符及封装
1 访问限定符C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。int main(){ //Student 是类名,可以将其看成是学生的一个群体 //s 是用Student类定义出来的对象 Student s; //编译报错:因为Student不是一个具体的学生,我们不能将名字,性别,年龄放到Student中 //Student.InitStudent("Perter","男",18); //s 是一个具体存在原创 2021-04-05 12:02:48 · 606 阅读 · 1 评论 -
C++中的this指针相关内容总结
什么是this指针?this指针是类“成员函数”第一个隐藏的参数,该指针时时刻刻指向调用成员函数的对象(当前对象)先写一份关于“类”的代码,我们从中开始探究thisclass Student{public: char _name[20]; char _gender[3]; int _age;public: //下列函数代码有四个参数,另一个参数是:隐藏的this指针 //在写代码期间,用户不用显示给出this指针,编译器在编译代码时,会自动加上this指针的参数 void原创 2021-04-24 11:37:46 · 287 阅读 · 0 评论 -
初步认识类
在c语言中,可以使用struct来自定义一种新的类型问题:c语言中struct中可以放函数吗?—不能,只能放数据验证:在c语言中struct student{ char _name[20]; int _age; void setage(int age) { _age = age; }};代码运行失败–》说明:c语言中的结构体内部是不能放函数的上述代码在C++中代码编译成功–》说明:c++中的结构体是能放函数的#include <iostream>usin原创 2022-01-19 11:45:51 · 54 阅读 · 0 评论 -
对比一下C++和C定义类别的一些区别和联系,以栈为例
首先我们用c语言定义一个栈:stack.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedef int STDataType;typedef struct Stack{ STDataType* a; int top; int capacity;}ST, Stack;void StackInit(ST*原创 2022-01-30 17:17:27 · 473 阅读 · 0 评论 -
类和对象 深入了解
这里写自定义目录标题1. 再谈构造函数2.C++11 的成员初始化新玩法。3. 友元4. static成员5. 内部类6. 再次理解封装1. 再谈构造函数2.C++11 的成员初始化新玩法。3. 友元友元分为:友元函数和友元类友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用问题:现在我们尝试去重载operator<<,然后发现我们没办法将operator<<重载成成员函数。因为cout的输出流对象和隐含的this指针在原创 2022-01-30 10:59:27 · 201 阅读 · 0 评论 -
类和对象 简单认识
目录1. 类的6个默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值操作符重载6. 默认拷贝构造与赋值运算符重载的问题7. const成员函数8. 取地址及const取地址操作符重载1. 类的6个默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值操作符重载6. 默认拷贝构造与赋值运算符重载的问题7. const成员函数8. 取地址及const取地址操作符重载...原创 2022-01-28 18:18:56 · 1129 阅读 · 0 评论 -
日期类 的简单实现
建议和我以下两篇文章结合看日期类是结合这两篇文章的一个实际应用:https://blog.csdn.net/sakeww/article/details/115278444https://blog.csdn.net/sakeww/article/details/122698571Date.h#pragma once#include<iostream>using namespace std;class Date {public: //缺省参数不能声明和定义都有,最好声明有就原创 2022-01-29 19:40:59 · 239 阅读 · 0 评论 -
类与对象 初步认识
[目录]1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的作用域5.类的实例化6.类的访问限定符及封装7.类的对象大小的计算8.类成员函数的this指针1.面向过程和面向对象初步认识https://blog.csdn.net/sakeww/article/details/1152784282.类的引入...原创 2022-01-19 11:35:09 · 419 阅读 · 0 评论