C++
文章平均质量分 88
C++相关的知识
小赵小赵福星高照~
这个作者很懒,什么都没留下…
展开
-
VScode搭建C/C++编译环境
VScode搭建C/C++编译环境原创 2022-11-10 17:28:39 · 871 阅读 · 0 评论 -
C++11详解
C++11文章目录C++11C++11简介列表初始化C++98中{}的初始化问题C++11内置类型的列表初始化自定义类型的列表初始化STL当中的列表初始化变量类型推导autodecltypeSTL当中的变化arrayforward_listunordered_map和unordered_set右值引用和移动语义左值和右值左值引用和右值引用右值引用的场景移动语义移动赋值完美转发默认成员函数可变参数模板emplace_back和push_back的区别lambda表达式lambda表达式语法包装器bindth原创 2022-05-26 19:44:30 · 990 阅读 · 1 评论 -
C++之特殊类的设计(单例模式)
特殊类的设计(单例模式)文章目录特殊类的设计(单例模式)请设计一个类,只能在堆上创建对象方法一方法二请设计一个类,只能在栈上创建对象方法一方法二请设计一个类,不能被拷贝C++98C++11请设计一个类,不能被继承请设计一个类,只能创建一个对象(单例模式)设计模式单例模式单例模式的实现饿汉模式懒汉模式请设计一个类,只能在堆上创建对象方法一正常情况下我们既可能在栈上有可能在堆上创建对象,现在要求只能在堆上创建对象,我们可以将析构函数设置成私有,当在栈上创建对象后,最后释放对象时会报错,因为析构函数是私有原创 2022-04-20 21:27:49 · 1101 阅读 · 1 评论 -
unordered_set和unordered_map模拟实现
unordered_set和unordered_map模拟实现文章目录unordered_set和unordered_map模拟实现KV模型的哈希表代码哈希表的改造模板参数的改造哈希表节点结构哈希表迭代器模拟实现operator++模拟实现operator*的模拟实现operator->的模拟实现operator==和operator!=的模拟实现迭代器的整体实现哈希表的最终代码unordered_set的模拟实现unordered_map的模拟实现KV模型的哈希表代码namespace buc原创 2022-03-31 22:57:46 · 361 阅读 · 0 评论 -
C++之unordered_map和unordered_set以及哈希详解
unordered_map和unordered_set的使用文章目录unordered_map和unordered_set的使用unordered_map的文档unordered_set和unordered_map的两个OJ题两个数组的交集两个数组的交集二set和undered_set的性能比较哈希哈希概念哈希冲突常见哈希函数哈希冲突的解决闭散列开散列闭散列的实现数据的存储结构哈希表的结构哈希表的插入哈希表的查找哈希表的删除哈希表闭散列的代码哈希表闭散列的完整代码开散列的实现开散列概念数据的存储结构哈希表原创 2022-03-30 22:57:28 · 2459 阅读 · 0 评论 -
C++之STLmap和set的模拟实现
模拟实现map和set文章目录模拟实现map和set源码中红黑树的结构模板参数中的仿函数红黑树的迭代器的模拟实现迭代器的基本结构红黑树的迭代器的整体代码map的模拟实现set的模拟实现我们首先来看一下源码当中的set和map的结构:template <class Key,class Compare = less<Key>, class Alloc = alloc>class set {public: typedef Key key_type; typedef原创 2022-03-21 21:31:29 · 1052 阅读 · 0 评论 -
C++STL之map和set的使用
map和set文章目录map和setsetset的使用set的插入set的遍历set的find接口set的erase接口map的介绍键值对mapmap的使用map的模板参数map的插入简单英文翻译字典统计字符串个数operator[]的使用erase的使用map和multimap的对比在OJ中的使用前k个高频单词题目描述错误代码写法正确代码写法setset的使用set的插入#include<iostream>#include<set>using namespace s原创 2022-03-12 19:47:34 · 1251 阅读 · 1 评论 -
笔试强训每日一题(十二)
笔试强训每日一题(十二)文章目录笔试强训每日一题(十二)另类加法题目链接题目描述测试样例解题思路走方格的方案数题目链接题目描述输入描述输出描述解题思路解题代码递归解题代码另类加法题目链接题目描述给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。测试样例1,2返回:3解题思路不使用算数运算符,故需要通过位运算计算:两个数字相加:1、求取数字相加后当前二进制位的取值(不考虑进位)2、求取数字相加后进位的数值比如:1+3二进制:00000001原创 2022-03-10 15:22:38 · 142 阅读 · 0 评论 -
硬核两万字带你理解C++之多态
多态文章目录多态多态的构成条件虚函数虚函数的重写C++11 override和final重载、覆盖(重写)、隐藏的对比抽象类概念接口继承和实现继承多态的原理虚函数表动态绑定和静态绑定单继承和多继承关系的虚函数表单继承的虚函数表多继承的虚函数表继承和多态常见的面试问题多态问答题多态:多态就是函数调用的多种形态,调用函数更加灵活,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态话不多说,我们首先来看这样的一段程序,让大家感知一下多态是什么意思,这是一段不构成多态的程序:class Per原创 2022-01-27 22:52:53 · 464 阅读 · 0 评论 -
C++之继承详解
继承文章目录继承继承的概念及定义继承的概念继承定义定义格式继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象赋值转换(切片)继承中的作用域(隐藏)派生类的默认成员函数构造函数拷贝构造函数赋值重载函数析构函数继承和友元继承与静态成员菱形继承和菱形虚拟继承菱形继承菱形虚拟继承继承和组合继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对原创 2022-01-23 11:23:53 · 1425 阅读 · 0 评论 -
剑指offer经典题目二:旋转数组的最小数字
剑指offer经典题目二题目链接:旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目要求给一个非递减排序的数组的一个旋转,需要输出旋转数组的最小元素,我们可以直接进行遍历去找最小的那个数,但是这种方法肯定是效率最低的核心考点:数组理解,二分查原创 2022-01-11 23:18:44 · 527 阅读 · 0 评论 -
剑指offer经典题目一:二维数组中的查找
剑指offer经典题目一题目链接:二维数组中的查找有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在。要求时间复杂度小于O(N)。解题思路:这道题本质上是查找一个数字,查找的过程,本质是排除的过程,如果一个一个遍历,一次只能排除一个,效率低,那么应该怎么做呢?这时我们需要用到这个数组的特性:数组的每行从左到右是递增的,每列从上到下是递增的,利用这个特性我们可以找到特殊的数字:右上角的数字或者左下角的数字,假如我们拿val值和右上角的数字进行比较原创 2022-01-10 10:09:13 · 418 阅读 · 1 评论 -
C++STL之优先级队列详解
priority_queue文章目录priority_queuepriority_queue的使用priority_queue在OJ中的使用数组中第k个最大元素priority_queue模拟实现push的模拟实现pop模拟实现迭代器区间构造函数模拟实现size的模拟实现empty的模拟实现top的模拟实现swap的模拟实现仿函数typename仿函数的变异玩法翻译:优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元原创 2021-12-13 21:21:26 · 4188 阅读 · 4 评论 -
C++之模板进阶
模板进阶文章目录模板进阶非类型模板参数非类型模板参数缺省值模板的特化概念函数模板的特化类模板的特化全特化偏特化模板分离编译什么是分离编译模板总结优点缺点没了解过模板的读者,先学习模板初阶:C++之模板初阶通过模板我们可以实现泛型编程,模板分为函数模板和类模板,下面我们就说点模板进阶的一些东西。非类型模板参数模板参数分类类型形参与非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模原创 2021-12-10 19:17:49 · 1833 阅读 · 1 评论 -
C++STL之stack和queue以及deque详解
stack和queue以及deque文章目录stack和queue以及dequestack的使用queue的使用栈的OJ题练习最小栈栈的压入、弹出序列逆波兰表达式求值什么是适配器?栈和队列的模拟实现栈的模拟实现队列的模拟实现dequedeque的使用deque的底层实现deque的优缺点stack文档翻译:stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层原创 2021-11-30 13:36:16 · 2139 阅读 · 0 评论 -
C++STL之list的使用和模拟实现
list文章目录listlist成员函数的使用list的构造函数list的遍历方式assignpush_back和push_frontpop_back和pop_frontinserteraseclearswapsortuniqueremove容器的迭代器的分类容器算法迭代器之间的关系list的模拟实现list迭代器的实现list迭代器和const迭代器模拟实现vector迭代器和list迭代器比较push_back模拟实现push_front模拟实现insert模拟实现erase模拟实现pop_back模原创 2021-11-30 13:21:58 · 1750 阅读 · 1 评论 -
C++STL之vector的使用和实现
vector文章目录vector什么是vector?vector的使用构造函数vector成员函数的使用vector的模拟实现迭代器和const迭代器的模拟实现无参构造函数的模拟实现size、capacity、empty成员函数的模拟实现operator[]模拟实现reserve模拟实现resize模拟实现push_back模拟实现pop_back模拟实现迭代器失效问题insert的模拟实现erase的模拟实现析构函数拷贝构造函数深拷贝传统写法深拷贝现代写法迭代器构造函数与swap函数模拟实现赋值重载赋值原创 2021-11-16 09:50:55 · 852 阅读 · 4 评论 -
C++STL之string类的使用和实现
文章目录STL简介什么是STLSTL的版本STL的六大组件STL的重要性string为什么学习string类?C语言中的字符串标准库中的string类string类string类对象的构造函数string类的成员函数的使用string类的模拟实现经典的string类问题浅拷贝深拷贝深拷贝和赋值的现代写法string类的模拟实现模拟实现string类的构造函数模拟实现string类的reserve模拟实现push_back模拟实现swap函数+=字符运算符重载:+=字符串运算符重载模拟实现resize获取_s原创 2021-11-06 17:30:23 · 1589 阅读 · 2 评论 -
C++之模板初阶
模板初阶泛型编程在计算机程序设计领域,为了避免因数据类型的不同,而被迫重复编写大量相同业务逻辑的代码,人们发展的泛型及泛型编程技术。什么是泛型呢?实质上就是不使用具体数据类型(例如 int、double、float 等),而是使用一种通用类型来进行程序设计的方法,该方法可以大规模的减少程序代码的编写量,让程序员可以集中精力用于业务逻辑的实现。泛型也是一种数据类型,只不过它是一种用来代替所有类型的“通用类型”我们通常如何实现一个通用的交换函数呢?void Swap(int& left, i原创 2021-10-28 16:19:57 · 539 阅读 · 1 评论 -
C++实现日期相关OJ题
日期相关OJ题文章目录日期相关OJ题日期差值计算日期到天数转换求1+2+3+...+n日期累加打印日期日期差值题目描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述每组数据输出一行,即日期差值示例1输入:2011041220110422输出:11解题代码#include<iostream>using namespace std;原创 2021-10-28 16:11:38 · 522 阅读 · 0 评论 -
C/C++内存管理详解
C/C++内存管理文章目录C/C++内存管理C/C++内存分布C语言中动态内存管理方式C++中动态内存管理operator new与operator delete函数operator new与operator delete的类专属重载new和delete的实现原理内置类型自定义类型定位new表达式(placement-new)常见面试题malloc/free和new/delete的区别内存泄漏什么是内存泄漏呢?内存的静态分配和动态分配的区别主要是两个:一是时间不同。静态分配发生在程序编译和连接的时候。原创 2021-10-23 10:50:37 · 753 阅读 · 0 评论 -
C++之类和对象(三)
类和对象(三)文章目录类和对象(三)再谈构造函数构造函数体赋值初始化列表explicit关键字static成员C++11 的成员初始化新玩法友元友元函数友元类内部类再次理解封装再次理解面向对象我们首先来看一个关于构造函数和析构函数调用顺序相关的一道题:class A{public: A() { cout<<"A()"<<endl; } ~A() { cout<<"~A()"<<e原创 2021-10-22 13:45:02 · 879 阅读 · 1 评论 -
C++之类和对象(二)
文章目录类和对象(二)构造函数构造函数概念构造函数特征析构函数析构函数概念析构函数特征拷贝构造函数拷贝构造函数概念拷贝函数特征运算符重载函数日期类的实现日期类的运算符重载函数const成员函数const修饰类的成员函数取地址及const取地址操作符重载取地址操作符重载const取地址操作符重载类和对象(二)在一个空类中,我们都知道一个空类的大小是一字节,那么空类真的什么都没有吗?答案是并不是,在我们写任何一个空类时,编译器其实都会自动生成6个默认的成员函数。那么这6个默认的成员函数是什么呢?在这篇博客原创 2021-10-15 18:34:08 · 487 阅读 · 0 评论 -
C++之类和对象(一)
类和对象(一)文章目录类和对象(一)面向过程和面向对象类的引入类的定义类的两种定义方式类的作用域类的访问限定符和封装访问限定符封装类的实例化如何计算类对象的大小类对象的存储方式this指针面向过程和面向对象C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。但是C++不是一个纯面向对象的语言,因为C++兼容C,故C++既有面向过程,也有面向对象,可以混合编程类的引入首先在C语言原创 2021-10-10 18:34:21 · 343 阅读 · 1 评论 -
硬核两万字文章带你C++入门
C++入门文章目录C++入门C++关键字命名空间C++输入&输出缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数函数重载函数重载概念名字修饰extern"C"引用引用概念引用特性常引用引用的使用场景传参返回值传值、传引用效率比较函数传参传值和传引用的效率比较值和引用作为返回值类型的性能比较引用和指针的区别内联函数概念特性auto关键字(C++11)auto的使用细则auto不能推导的场景基于范围的for循环(C++11)范围for的语法范围for的使用条件指针空值---nullptr(C++1原创 2021-09-29 15:18:31 · 13541 阅读 · 22 评论