自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 面试金典:猫狗收容所

一、题目描述:有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为2,则代表有人收养动物,第二个元素若为0,则采取第一种收养方式,若为

2020-09-04 22:13:08 293

转载 C++语言学习(十八)——异常处理

C++语言学习(十八)——异常处理文章来源:https://blog.51cto.com/9291927/2164586一、C语言异常处理异常是指程序在运行过程中产生可预料的执行分支。如除0操作,数组访问越界、要打开的文件不存在。Bug是指程序中的错误,是不被预期的运行方式。如野指针、堆空间使用结束未释放。C语言中处理异常的方式一般是使用if…else…分支语句。double divide(double a, double b){ const double delta = 0.0000

2020-08-09 17:21:15 439

转载 C++语言学习(十五)——C++抽象类与接口

C++语言学习(十五)——C++抽象类与接口文章来源:https://blog.51cto.com/9291927/2148698一、抽象类与接口1、抽象类简介面向对象的抽象类用于表示现实世界的抽象概念,是一种只能定义类型,不能产生对象的类(不能实例化),只能被继承并被重写相关函数,直接特征是相关函数没有完整实现。C++语言没有抽象类的概念,通过纯虚函数实现抽象类。纯虚函数是指定义原型的成员函数,C++中类如果存在纯虚函数就成为了抽象类。抽象类只能用作父类被继承,子类必须实现父类纯虚函数的具体功

2020-08-06 22:07:37 221

转载 C++语言学习(十四)——C++类成员函数调用分析

C++语言学习(十四)——C++类成员函数调用分析文章来源:https://blog.51cto.com/9291927/2148698一、C++成员函数1、C++成员函数的编译C++中的函数在编译时会根据命名空间、类、参数签名等信息进行重新命名,形成新的函数名。函数重命名的过程通过一个特殊的Name Mangling(名字编码)算法来实现。Name Mangling算法是一种可逆的算法,既可以通过现有函数名计算出新函数名,也可以通过新函数名逆向推导出原有函数名。Name Mangling算法可以

2020-08-06 21:15:24 814

转载 C++语言学习(十三)——C++对象模型分析

C++语言学习(十三)——C++对象模型分析文章来源:https://blog.51cto.com/9291927/2148687一、C++对象模型分析1、类对象模型的内存布局class是一种特殊的struct,class与struct遵循相同的内存对齐原则,class中的成员函数与成员变量是分开存放的,每个对象拥有独立的成员变量,所有的对象共享类中的成员函数。运行时,类对象退化为结构体的形式:A、所有成员变量在内存中依次排布B、由于内存对齐的存在,成员变量间可能存在内存间隙C、可以通过内存

2020-08-05 16:19:45 297

转载 C++语言学习(十一)——多态

C++语言学习(十一)——多态文章来源:https://blog.51cto.com/9291927/2147905一、多态简介C++中的多态(polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。可以减轻系统升级,维护,调试的工作量和复杂度。多态是一种不同层次分类下的重要联系,是一种跨层操作。二、多态实现的前提赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代。赋值兼容

2020-08-05 10:42:21 136

原创 剑指Offer:(数组)连续子数组的最大和

一、题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)二、思路定义两个变量 当前和cur_sum、最大和max_

2020-08-04 22:02:58 91

转载 C++语言学习(十)——继承与派生

C++语言学习(十)——继承与派生原文链接:添加链接描述一、类之间的关系1、类之间的组合关系组合关系是整体与部分的关系。组合关系的特点:A、将其它类的对象作为当前类的成员使用B、当前类的对象与成员对象的生命周期相同C、成员对象在用法上与普通对象相同Computer类由其它多个部件类组合而成,当Computer销毁时,其它部件对象同时销毁。#include using namespace std;class Memory{public:Memory(){cout <&l

2020-08-04 21:14:25 241

转载 C++语言学习(八)——操作符重载

C++语言学习(八)——操作符重载文章来源:(https://blog.51cto.com/9291927/2143237)一、操作符重载基础1、操作符重载的语法通过operator关键字可以定义特殊的函数,operator本质是通过函数重载操作符。Type operator operatorname(const Type p1, const Type p2){ Type ret; return ret;}2、友元函数重载操作符可以将操作符重载函数声明为友元函数。#i

2020-08-04 15:17:33 243

转载 C++语言学习(六)——二阶构造模式

C++语言学习(六)——二阶构造模式一、构造函数的问题构造函数存在的问题:A、构造函数只提供自动初始化成员变量的机会B、不能保证初始化逻辑一定成功,如申请系统资源可能失败C、执行return语句后构造函数立即结束构造函数创建的对象可能是半成品对象,半成品对象是合法的对象,但是程序bug的来源之一。因此实际工程开发过程中使用二阶构造模式。二、二阶构造模式1、二阶构造模式简介由于构造函数存在的潜在问题,实际工程开发中类对象的构造过程如下:A、资源无关的初始化操作资源无关的初始化操作一般不会

2020-08-03 23:22:37 188

转载 C++语言学习(七)——友元

C++语言学习(七)——友元一、友元简介1、友元简介面向对象编程的类的设计机制实现了数据的隐藏与封装,类的成员变量一般定义为私有成员,成员函数一般定义为公有的,是类与外部的通信接口。在实践中,类外的某些函数需要频繁地访问类的成员变量,可以将类外的函数定义为类的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但友元破坏了类的封装性和隐藏性,使得非类的成员函数可以访问类的私有成员。友元是C++语言中的一种关系,友元关

2020-08-03 22:07:29 167

原创 剑指offer:(数组)数组中只出现一次的数字

一、题目1、一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这1个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)2、一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)二、思路1、当数组中只存在1个只出现一次的数字,遍历整个数字,并且元素异或即可得到结果。因为其他数字都要出现2次。a 异或 a =00异或 b=ba 异或 a异或 b =b2、现在有两个数字出现一次,那

2020-08-03 21:30:10 108

转载 剑指Offer:(数组)数组中出现次数超过一半的数字

数组中出现次数超过一半的数字一、题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0二、思路数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次

2020-08-03 15:56:10 257

原创 剑指Offer(数组):调整数组顺序使奇数位于偶数前面

剑指Offer(数组):调整数组顺序使奇数位于偶数前面一、题目二、思路三、代码一、题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。二、思路 首先 统计数组中奇数元素个数num_odd; 然后创建一个新数组new int[length] 最后遍历原数组,当元素为奇数时,元素从0开始存入,当元素为偶数时,元素从newarray[num_odd]存入.三、代码#inc

2020-08-03 11:35:57 110

转载 C++语言学习(四)——类与对象

C++语言学习(四)——类与对象一、构造函数(constructor)二、拷贝构造函数(copy constructor)三、析构函数(destructor)四、this指针五、赋值操作符重载六、函数与类对象七、栈和堆上的对象和对象数组八、类成员函数的存储方式文章来源:https://blog.51cto.com/9291927/2143145一、构造函数(constructor)1、构造函数简介C++语言中,构造函数是与类名相同的特殊成员函数。在类对象创建时,自动调用构造函数,完成类对象的初始化

2020-08-02 10:18:33 293

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除