![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
L公子
这个作者很懒,什么都没留下…
展开
-
c++面经2
11.什么是inline内联函数,使用内联函数有什么优缺点,什么是宏,宏和inline函数有什么区别内联函数是用inline关键字修饰的,定义在类体外的成员函数,内联函数会在函数编译阶段进行展开,少了函数调用的开销以提高代码运行的效率内联函数的优点:它通过避免函数调用开销来加速程序的运行当函数调用发生时,它可以节省堆栈上变量push/pop的开销它节省了函数调用返回的开销内联函数的缺点:由于代码扩展,它增加了可执行文件的大小可能到时内存崩溃宏的优缺点:宏包括宏常量和宏函数宏常量优点:一改原创 2020-10-19 10:35:50 · 283 阅读 · 0 评论 -
c++之继承
1.子类对象可以直接赋值给父类对象#include<iostream>using namespace std; class Parent{private: int a;public: }; class Child :public Parent{private: int b;public: }; int main(){ Child c; Parent p; p = c; //子类对象可以直接赋值给父类对象 return原创 2020-10-19 09:45:54 · 278 阅读 · 0 评论 -
LeetCode 349
LeetCode:349https://leetcode-cn.com/problems/intersection-of-two-arrays/题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。题解:class So原创 2020-10-17 11:21:11 · 107 阅读 · 0 评论 -
c++面经1
1.数组和链表的区别二者都属于一种数据结构从逻辑上看:1):数组是一种线性表数据结构。他用一组连续的内存空间,来存储一组具有想同类型的数据,最大的特点是支持随机访问,但数组必须事先定义固定的长度(元素个数),不能适应数据动态增加的情况,当数据增加时,可能超过原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取2):链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,链表由一系列节点组成,链表动态地进行存储分配,可以适应数据动态地增原创 2020-10-17 10:29:44 · 175 阅读 · 0 评论 -
LeetCode 841 钥匙和房间
题目描述:有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进入每个房间返回 tr原创 2020-09-02 00:04:56 · 92 阅读 · 0 评论 -
LeetCode 486 预测赢家
题目描述:给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者 1 ),那么玩原创 2020-09-01 23:53:35 · 563 阅读 · 0 评论 -
c++项目,制作GIF动态图
项目目录项目背景项目简介项目可行性分析第三方库以及项目工具介绍项目总体设计流程图项目详细设计项目测试项目结果项目源代码项目背景在很多时候,人们所说的一句话在不同的的环境和状态下回有不同的含义,但是,我们有时候并不能表达出的信息并不是自己想要的结果,尤其是在我们在虚拟网络上聊天时,仅仅依靠文字我们并不能很好地看出对方的情况,而随着互联网的不断发展与进步,有时候一个简简单单的表情也许能比很长一段文字能更好地表现出来对方想让我们知道的信息,这样就更加方便彼此之间的交流。在我们上网聊天时,“一言不合就斗图”的情原创 2020-08-29 13:28:36 · 5870 阅读 · 1 评论 -
c/c++内存分配方式
数据段:数据段通常是指用来存放程序中已初始化的全局变量和静态变量的一块内存区域。数据段属于静态内存分配,可以分为只读数据段和读写数据段。 字符串常量等,但一般都是放在只读数据段中 。代码段:代码段通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等,但一般都是放在只读数据段中 。栈区:由系统自动分配,当函数执行结束时由系统自动释放。存放局部.原创 2020-08-24 10:42:59 · 137 阅读 · 0 评论 -
c++内联函数
内联函数1.什么是内联函数在C语言中,如果一些函数被频繁调用,不断的有函数入栈,即函数栈,会造成栈空间和栈内存的大量消耗,为了解决这一问题,特别引入了inline修饰符,表示为内联函数。2.为什么要引入内联函数引入内联函数是为了解决程序中函数调用的效率问题,因为函数的调用有一定时间和空间方面的开销,将会影响其效率,特别是对于一些函数代码不是很大, 但又频繁调用的函数来讲,解决其效率更加重要...原创 2019-12-06 17:26:31 · 267 阅读 · 0 评论 -
宏的定义,宏与函数的区别以及优缺点比较
宏的定义,宏与函数的区别以及优缺点比较1.宏定义c程序提供的预处理功能之一。包括带参数的宏定义和不带参数的宏定义。具体是指用一个指定的标志符来进行简单的字符串替换或者进行阐述替换。宏书写形式:#define<宏名>(<参数列表>)<宏体>宏名:在以上定义中的标识符称为宏名宏展开:在c程序编译时将宏名替换为字符串的过程称为宏展开,宏展开发生在编译时...转载 2019-12-06 16:21:02 · 1906 阅读 · 0 评论 -
红黑树的概念及其基本操作
1.红黑树的概念红黑树,是一种二叉搜索树,但在每个节点上增加一个存储位表示结点的颜色,可以是Red或Black,通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的2.红黑树的性质每个节点不是红色就是黑色根结点是黑色的如果一个节点是红色的,则它的两个孩子都是黑色的每条路径上的黑色结点数目相同每个叶子结点都是黑色的(这里...原创 2019-10-30 17:45:46 · 380 阅读 · 0 评论 -
c++之AVL树
AVL树及其基本操作1.AVL树概念二叉搜索树岁可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于顺序表中搜元素,效率低下。AVL树是一颗平衡二叉搜索树,在AVL树中,任何结点的两个子树的高度差的绝对值不超过1(需对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。2.AVL树的性质它的左右子树都是AVL树左右子树的高度差(简称平衡因子)的绝...原创 2019-10-29 21:39:05 · 345 阅读 · 0 评论 -
c++之二叉搜索树
二叉搜索树及其基本操作1.二叉搜索树的概念二叉搜索树又称为二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树:若它的左子树不为空,则其左子树上所有节点的值都小于其根结点的值若它的右子树不为空,则其右子树上所有节点的值都大于其根结点的值它的左右子树也都是二叉搜索树2.二叉搜索树的基本操作2.1二叉搜索树的查找原理:若根结点不为空:如果根结点key==查找key 返回t...原创 2019-10-26 21:25:44 · 202 阅读 · 0 评论 -
c++之智能指针
1.什么是RAIIRAII是一种利用对象生命周期来控制程序资源(如内存,文件句柄,网络连接,互斥量等等)的简单技术。在对象构造时获取资源,接着控制对象的访问是指在对象的生命周期内始终保持有效,最后在对象析构时释放资源,借此,我们实际上是把管理一份资源的责任托管给了一个对象,这种做法有两大好处:不需要显式的释放资源采用这种方式,对象所需的资源在其生命期呃逆始终保持有效2.智能指针2.1...原创 2019-10-17 16:48:24 · 133 阅读 · 0 评论 -
c++之异常
1.什么是异常异常一般指的是程序运行期发生的非正常情况,异常一般是不可预测的,如:内存不足:打开文件失败,范围溢出等 异常处理的核心思想是,把功能模块代码与系统中可能出现错误的处理代码分离开来,以此来达到使我们的代码组织起来更美观,逻辑更清晰,并且从根本上上来提高我们软件系统长时间稳定运行的可靠性。2.C语言处理异常的传统方法2.1基于goto语句的异常处理goto语句有非常多的...原创 2019-10-14 17:48:44 · 167 阅读 · 0 评论 -
类与对象-----前篇
类与对象-----前篇1:类与对象的初步认知1.1 类定义一个类,实际上是定义一个数据类型的蓝图,这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包含了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字class开头,后跟类的名称,类的主体是包含在一对花括号中,类定义后面必须跟着分号或声明列表,例如,我们使用关键字class定义一个Date类,如...原创 2019-07-31 15:36:57 · 95 阅读 · 0 评论 -
类与对象-----中篇
类与对象-----中篇1:类的6个默认成员函数2:构造函数1):概念一个特殊的成员函数,名字与类名相同,创建类类型对象的时候,由编译器自己调用,在对象的生命周期中且调用一次,以保证每个数据成员都有一个合适的初始值2):构造函数的特性:函数名与类名相同没有返回值有初始化列表(可以不用)对象实例化时编译器自动调用对应的构造函数构造函数可以重载test.hclass Dat...原创 2019-07-31 17:51:08 · 481 阅读 · 0 评论 -
类与对象-----下篇
类与对象-----下篇1:再谈构造函数1.1构造函数初始化列表:构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式,例如://构造函数初始化列表Date::Date(int year, int month, int day) :_year(year) ,_month(month) ,_day(day){}//构造函数赋值...原创 2019-08-01 16:46:53 · 86 阅读 · 0 评论 -
顺序表的实现
顺序表的实现一:c语言实现test.h#pragma oncetypedef struct SeqList{ int* array; int capacity; int size;}SeqList;//初始化void SeqListInit(SeqList* seq);//销毁void SeqListDestroy(SeqList* seq);//头插void Seq...原创 2019-08-11 16:11:12 · 96 阅读 · 0 评论 -
c++之初识模板
初识模板模板:函数模板和类模板一:函数模板1:概念 函数模板代表了一个家族,在使用时被参数化,根据实参类型产生函数的特定类型模板。2:函数模板格式:template<typename T1,typename T2,...,typename Tn>返回值类型 函数名(参数列表){}template<typename T>void Swap(T& ...原创 2019-09-02 20:38:09 · 156 阅读 · 0 评论 -
C++之多态
1.多态的概念同一件事物,在不同场景下表现出的不同的状态举例:买票行为,学生半价,普通人全价,军人优先分类:静态多态和动态多态静态多态:编译器在编译时确定具体调用哪个函数。体现:函数重载,模板动态多态:编译时无违法确定调用哪个函数,只有在代码运行时才知道具体应该调用哪个函数 体现:虚函数+重写动态多态的实现2.1C++中实现多态的条件>>在继承体系中,基类中必须有虚...原创 2019-10-02 15:54:53 · 189 阅读 · 0 评论 -
c++STL之string类
1.为何要学习string类符合面向对象的思想,而且底层空间不需要用户自行控制,不会发生越界访问的情况2.string类的接口2.1string类对象的常见构造函数名称 功能说明string() 构造空的string类对象,即空字符串string...原创 2019-10-06 19:42:59 · 114 阅读 · 0 评论 -
初识c++
初识c++1:c++关键字asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeofthrowtypenamecaseenummutablestati...原创 2019-07-24 16:32:22 · 133 阅读 · 0 评论