![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
lucky52529
跳出自己的舒适区
展开
-
[c++]——什么是类型萃取
类型萃取类型萃取从字面意思上来说其实就是帮助我们挑选某个对象的类型,筛选特定的对象来做特定的事。C++中的类型萃取并不是每个人都熟知,他们一般都出现在STL库底层的实现原理中,和笔者一样,相信听到这个名词的读者都好奇类型萃取到底是什么,他是用来做什么事情的?不妨让我们一探究竟从vector增容说起要说类型萃取,还需要从vector增容说起,我截取出一段之前笔者模拟实现vector增容的代码...原创 2020-01-31 21:11:36 · 3768 阅读 · 2 评论 -
[c++]——小白视角总结c++11中的新特性
C++11中的新特性总结学习C++11的新特性已经很久了,但是许久不看,知识点又模糊了起来。C++11中许多特性看似复杂,但是理解了其中的道理,会觉得豁然开朗。特性一:列表初始化下面这种方式的数组初始化方式玩过C语言的同学都很熟悉:int arr[] = { 1, 2, 3, 4 };c++11中为了提供类似的方式用来初始化vector,提供了下面新的方式vector<int&...原创 2020-01-31 16:47:37 · 376 阅读 · 0 评论 -
[c/c++]——数据的存储
1.数据在内存中的存储1.1 源码,反码,补码源码: 直接将二进制按照正负数的形式翻译成二进制就可以反码:将原码的符号位不变,其他位依次按位取反就可以得到补码:在反码的基础上加一ps:在内存中,数据存放的都是补码,因为计算机只有加法器1.2机器的大小端(重点)由图可知数据在(vs2008)图中是倒着存的,这就是机器的大小端问题1.2.1什么是机器的大小端大端模式存储:数据的低...原创 2019-01-30 20:59:23 · 358 阅读 · 0 评论 -
[c/c++]——动态内存管理
动态内存管理前言首先我们要明白数据的内存分配原则来看几道题这些答案是怎么来的呢,博主做了下面的总结分配方式:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。静态分配的区域的生命期是整个软件运行期,就是说从软件运行开始到软件终止退出。只有软件终止运行后,这块内存才会被系统回收[2]在栈上创建。在执行...原创 2019-01-18 17:24:20 · 335 阅读 · 0 评论 -
[c++]——实现日期计算器
日期类:class Date{public: int Getday(int year, int month, int day) { if (month == 0) { return 31; } int arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (month == 2 &...原创 2019-01-16 15:10:19 · 714 阅读 · 0 评论 -
[c/c++]——函数栈帧
函数栈帧相信作为程序员的你对于写代码来说可能已经是行云流水了,就拿最基础的c语言来说,c语言的基本组成单元是函数,而通过函数之间的互相调用就构成了我们的程序。但是,写了这么久的代码,你真的知道函数间底层是怎么进行调用的么?今天就让我们透过汇编带你一探函数栈帧中的奥秘。这幅图相信大家一定很熟悉,在学习c语言的时候老师没少提到这个东西,但是今天我们主要来聊一聊图中的栈,栈是向下生长的,也就是说高地...原创 2019-04-27 18:31:55 · 1406 阅读 · 2 评论 -
[c/c++]——最长回文子串
最长回文子串已经很久没有更新关于leetcode的题解了,一个是觉得太费时间,二一个目前网上也有很全面的解答,但是在写leetcode的最长回文子串时,发现很多同学的代码都很长(实际上几行就可以解决的事情),并且c++解答的代码不够完整。最关键的是在一种“马拉车”的算法卡了很久很久,今天把几种求解的方法全部都整理出来,方便大家也便于自己以后复习。ps:讲解很少,都是整理出可看性很高的源码方法...原创 2019-05-08 19:12:31 · 9035 阅读 · 5 评论 -
[c++]——用哈希表封装unordered_map/set
用哈希表封装unordered_map/set上一篇博客我们讲了哈希表(戳这里查看上一篇博客),这篇博客我们来用已经实现的哈希表来封装出unordered_map/set,我们以前讲过用红黑树封装map/set,其实这里也是换汤不换药,原理基本一模一样,只不过是哈希表有4个模板参数,通过这篇博客,你对哈希表的4个模板参数一定会有新的理解。unordered_map同样我们用unordered...原创 2019-05-11 19:59:04 · 406 阅读 · 0 评论 -
[c/c++]——工厂模式
工厂模式工厂模式在设计模式中属于创建型模式,他提供了一种创建对象的最佳方法。在工厂模式中,我们并不会暴露给用户任何创建对象的信息,而是通过一个共同的接口来创建对象。工厂模式主要解决了接口选择的问题,其实更直白的说,您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。工厂模式大体的分为三类,分别为简单工厂模式、工厂方法模式和抽象工厂模式,下面来...原创 2019-09-20 12:26:28 · 1471 阅读 · 0 评论 -
[c/c++]——static关键字
1.static可以修改标识符的链接属性当编译多个文件时,未加static的函数和全局变量使用extern都有全局可见性,我们来举个栗子//test.hchar a = 'A'; void fun1(){...}//main.cextern char a;fun1(); printf("%c ", a);此时文件通过编译,因为此时我们的并未对fun1()函数和a变...原创 2019-02-19 20:27:47 · 225 阅读 · 0 评论 -
[c++]——函数重载
c++的函数重载先来看几个问题:1.什么是函数重载?2.为什么需要函数重载?3.函数重载为什么不考虑返回类型?4.编译器如何解决命名冲突?5.编译器如何解析函数重载调用?1.什么是函数重载?解释:函数重载是指在相同的作用域内,函数名相同,参数列表不同的一组函数,这组函数被称为重载函数。ps:重载函数通常用来命名一组功能相似的函数,这样减少了函数名的数量,避免了名字空间的污染,...原创 2019-02-20 19:39:10 · 412 阅读 · 1 评论 -
[c++]——类和对象(上篇)
lesson02—类和对象上篇1.类和对象的初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。可以粗劣的将类理解为一张设计图,而通过这张设计图设计出的建筑就可以称为对象。struct与class的区别:解答:C++需要兼容C语言,所以C++中struct可...原创 2019-02-23 10:33:18 · 167 阅读 · 0 评论 -
[c/c++]——const关键字思维导图
const关键字const关键字是我们在平日学习和面试中都会经常遇到的一个关键字,笔者今天用导图对const关键字进行了总结,导图并没有对每个知识点都进行深入的分析,但是这张图一定会让你对const关键字形成一个体系化的理解,也便于自己以后复习。有小伙伴想更细致了解const关键字,参考大佬博客https://blog.csdn.net/Eric_Jo/article/details/4138...原创 2019-04-16 12:34:26 · 343 阅读 · 1 评论 -
[c++]——c++的类型转换
c++类型转换在学习c语言时,我们都知道可以将double类型赋值给int类型,这叫隐式类型转换,而将一个int*的地址强制转换为int类型叫做显示类型转换,那么c++中又是怎么规范的呢?一起来看看1.c语言中的类型转换隐式类型转换:类型相近的类型,类型相关的类型进行转换显示类型转换:相反的,是一种不相关类型的转换void Test (){ int i = 1; // 隐式类型...原创 2019-04-08 15:10:47 · 456 阅读 · 0 评论 -
[c++]——智能指针
智能指针智能指针听名字就知道他应该是一个指针或者类似指针的东西,那么他到底是干什么的?让我们一起来看看1.为什么需要智能指针? 我们在谈异常的时候,有下面这么一段代码,这段代码中有一个异常重新抛出的动作,这里我们说过其实是为了防止没有释放array的空间造成内存泄漏。double Division(int a, int b){ // 当b == 0时抛出异常 if (b == ...原创 2019-04-05 20:07:48 · 214 阅读 · 0 评论 -
[c++]——异常
异常c语言中处理出现的错误经常使用assert断言导致程序结束,或者使用错误码(程序员难以知道出错的方位),这对用户和程序员都会产生很多的不便之处,所以一起来看c++中处理错误的方式。1.异常的概念1.1异常的描述异常:异常是一种处理错误的方式,是指一个函数在执行时出现了自己无法处理的错误将会抛出异常,来让函数的直接或者间接调用者来处理错误问题1.2异常中的3个关键字throw:当程...原创 2019-03-30 21:00:25 · 153 阅读 · 0 评论 -
[c++]——多态
多态我们知道多态是c++语言特性非常重要的一大特性,今天就让我们一起来研究总结c++中的多态特性1.多态的概念1.1什么是多态百度百科:多态(Polymorphism)按字面的意思就是"多种状态"。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述–多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可...原创 2019-03-23 21:53:17 · 347 阅读 · 3 评论 -
[c++]——继承
1.继承的概念目录:继承的概念基类与派生类的赋值转换继承中的作用域派生类的默认成员函数继承与友元关系继承和静态成员继承和组合面试笔试题ps:下文中 父类 = 基类 子类 = 派生类1.1继承的概念继承是面向对象程序设计中可以使代码复用的重要手段,他是让我们在原有类的基础上进行拓展增加新的功能,这样产生的新的类叫做派生类或者子类。(继承是类设计层次的复用)1.2继...原创 2019-03-22 22:20:56 · 238 阅读 · 0 评论 -
[c++]——浅谈STL vector
ps:本文并不是对vector进行全面的讲解,笔者只针对典型的容易犯错的地方进行了详解1.vector概述:vector的数据安排以及操作方式,与array非常相似。俩者唯一的区别就是在于空间应用的灵活性。array是静态空间,空间一旦配置就不能再进行改变,如果需要更换大一点的空间我们需要重新开辟一块空间,将原来的数据拷贝到新空间,然后将旧空间释放。而vector会以动态开辟空间的方式进行增容...原创 2019-02-26 14:36:46 · 488 阅读 · 0 评论 -
[c++]——类和对象(下篇)
lesson04—类和对象(下篇)1. 再谈构造函数2.C++11 的成员初始化新玩法。3. static成员4. 友元5. 内部类1.再谈构造函数1.1初始化列表初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个&amp;amp;amp;amp;quot;成员变量&amp;amp;amp;amp;quot;后面跟一个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)类中原创 2019-02-23 10:33:51 · 132 阅读 · 0 评论 -
[c++]——类与对象(中篇)
lesson03—类与对象(中篇)1.类的6个默认成员函数2.构造函数特性:1.函数名与类名相同2.没有返回值3. 构造函数可以重载4. 实例化时自动调用对应的构造函数样例1:(无参构造)class Date{public: Date()//无参构造 同时也可以不写,系统自动调用构造函数 {} void Display() { cout &amp;amp;amp;amp;amp;amp;amp;lt;&a原创 2019-02-23 10:33:39 · 548 阅读 · 0 评论 -
[c/c++]——inline关键字思维导图
inline函数inline函数是一种为了替换宏而产生的函数方式,一般在面试中都会让面试者和宏定义进行比较说出他们的不同之处,下面的导图对inline函数进行了总结,也方便自己以后复习使用。...原创 2019-04-16 13:54:37 · 211 阅读 · 0 评论