自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构和排序

数据分为逻辑结构:集合、线性结构(一一)、树形结构(一多)和图状结构(多多);物理结构顺序存储结构连续链式存储结构数据任意存储单元,通过保存地址方式找到关联数据元素队列的定义队列:一头压入,另一头弹出,先进先出栈:只能栈顶插入和删除,先进后出排序选择、冒泡、插入归并、快速、...

2020-07-06 16:16:19 145

原创 C++基础

malloc与new?malloc为C库函数,new为C++关键字malloc申请内存以字节为单位,不可同时初始化这片内存;new申请内存以类型为单位,并同时初始化内存对象的创建只能靠new,创建对象时,触发构造函数free与deletefree为C库函数,delete为C++关键字free为释放内存后,还得将指针赋值NULL,否则可能出现野指针delete直接销毁对象,触发析构函数...

2020-07-01 09:05:02 117

原创 图片缩放算法

int PicZoom(PT_PixelDatas ptOriginPic, PT_PixelDatas ptZoomPic){ unsigned long dwDstWidth = ptZoomPic->iWidth; unsigned long* pdwSrcXTable; unsigned long x; unsigned long y; unsigned long dwSrcY; unsigned char *pucDest; unsigned char *pucS

2020-08-03 16:59:09 160

原创 链接freetype和libjpeg库对文字和图片解码映射到LCD上显示

freetype为什么用,对矢量字体的搜索开源库的使用FontsInit()->FreeTypeInit()->FreeTypeFontInit()原理:freetype是字体搜索引擎,将文字编码和字库文件的字形一一对应。可对字体缩放和旋转。实现步骤:1初始化库2创建face object(字形和库的对应关系)3可加载字体缩放和旋转4通过编码值加载对应的字符点阵5最后通过把字符发写入lcd映射地址上static int FreeTypeFontInit(char *pcF

2020-08-03 16:49:48 180

原创 数码相框总结

三总输入模式比较int GetInputEvent(PT_InputEvent ptInputEvent){ /* 把链表中的InputOpr的GetInputEvent都调用一次,一旦有数据即返回 */ PT_InputOpr ptTmp = g_ptInputOprHead; while (ptTmp) { if (0 == ptTmp->GetInputEvent(ptInputEvent)) { return 0; } ptTmp = ptTmp-&gt

2020-08-03 16:00:42 169

原创 技术面 C++

技术面自我介绍介绍简历中的某一个项目计算机网络有几层(传输层有哪些协议)TCP/UDP区别TCP三次握手协议过程数组和链表区别重写和重载的概念C++多态的机制给一个集合,集合中有0-9共10个数,有多少个子集链表中在某个位置中插入一个节点,如何插入线程和多线程的区别代码中常用的数据结构有哪些报文中前几个字节包含什么HR面自我介绍目前面试几个公司了,说下公司名字用几个词语形容你的性格对待加班的看法如何释放压力项目合作中如何合作项目合作中遇到的困难是什么如果项目组成员

2020-08-01 09:15:33 146

原创 堆排序

#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;/* 荷兰国旗快排*/class Sort{public: int* Partition(int arr[], int L, int R) { int less = L - 1; int more = R; int cur = L; whil..

2020-07-13 17:33:37 67

原创 荷兰国旗快排

#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;/* 荷兰国旗快排*/class Sort{public: int* Partition(int arr[], int L, int R) { int less = L - 1; int more = R; int cur = L; whil..

2020-07-13 16:23:47 143

原创 递归模型和边界

#include <cstdlib>#include <iostream>#include <vector>#include <deque> using namespace std;#if 1class Test{public: int FMath(int n) { if(n == 1) return 1; else if(n == 2)

2020-07-09 15:56:54 279

原创 哈希表

哈希表关键值与存储位置通过哈希函数一一对应。定义:根据设定的哈希函数及处理冲突的方法将查找表中各数据元素存储在一段有限的连续空间中,即得哈希表构造哈希函数直接定址法数字分析法- 3平方取中4折叠法...

2020-07-02 10:53:25 89

原创 空间换时间

/* 问题: 在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。 设计一个算法,找出出现次数最多的数字。*/#include <iostream>using namespace std;void search(int a[], int len) // O(n){ int sp[1000] = {0}; int max = 0; for(int i=0; i<len; i++)

2020-07-01 15:23:56 73

原创 数据

逻辑结构:集合、线性结构(一一)、树形结构(一多)和图状结构(多多);物理结构顺序存储结构连续链式存储结构数据任意存储单元,通过保存地址方式找到关联数据元素

2020-07-01 14:50:53 55

原创 经典问题分析五 变量是不是指针 构造析构函数抛出异常

经典问题分析五编程判断一个变量是不是指针?C++支持C语言中的可变参数C++编程匹配调用优先级1.重载函数2.函数模板3.变参函数#include <iostream>#include <string>using namespace std;class Test{public: Test() { } virtual ~Test() { }};template< typename T >char IsPtr(T* v)

2020-06-29 19:56:52 69

原创 C++中的类型识别

基类指针指向子类对象基类引用成为子类对象的别名静态类型 - 变量(对象)自身的类型动态类型-指针(引用)所指向对象的实际类型解决 -利用多态1.基类中定义虚函数返回具体类型信息2.所有派生类都必须实现类型相关的虚函数3.没个类的类型虚函数都需要不同的实现示例1#include <iostream>#include <string>using namespace std;//fulei jileiclass Base{public: virt

2020-06-29 11:44:56 216

原创 C++异常处理下

catch语句块可以抛出异常catch中捕获异常可以被重新解释后抛出为了统一异常类型示例#include <iostream>#include <string>using namespace std;void Demo(){ try { try { throw 0; } catch(int i) { cout << "catch(int i)" << endl; throw i; }

2020-06-29 10:46:05 88

原创 C++异常处理

try catch(捕捉异常)try 正常代码catch处理(try语句的)异常情况thow抛出异常C++异常处理throw抛出异常必须catch处理当前函数能处理异常,继续否则,函数停止 执行,并返回异常,无返回值未被处理的异常会顺着函数调用栈向上传播直到被处理为止,否则程序停止执行示例#include <iostream>#include <string>#include <csetjmp>using namespace

2020-06-29 08:57:50 90

原创 C语言异常处理

C异常处理#include <iostream>#include <string>using namespace std;double divide(double a, double b, int* valid){ const double delta = 0.000000000000001; double ret = 0; if( !((-delta < b) && (b < delta)) ) ...

2020-06-28 21:36:59 146

原创 单例类模板

单例类模板如何定义一个类,使得这个类最多创建一个对象要控制对象数目,必须对外影藏构造函数思路:将构造函数的访问属性设置为private定义instance 并初始化为NULL当需要使用对象时,访问instance的值空值:创建对象,并用instance标记非空值:返回instance标记的对象#include <iostream>#include <string>using namespace std;class SObject{ st

2020-06-28 21:08:20 128

原创 智能指针类模板

智能指针类模板最重要类模板之一自动内存管理的主要手段能在很大程度上避开内存相关的问题STL中的智能指针auto_ptr声明周期结束时,销毁指向的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智能指针对象多个智能指针对象不能指向同一片堆空间(避免多次释放同一指针)#include <iostream>#include <string>#include <memory>using namespace std;class

2020-06-28 20:17:42 433

原创 数组类模板

模板参数可以是数值型参数(非类型参数)数值型模板参数的限制变量、浮点数、类对象不能作为模板参数本质:模板参数是在编译阶段被处理的单元,因此,在编译阶段必须准确无误的唯一确定1+2+3+ … +N的值?数值型模板参数#include <iostream>#include <string>using namespace std;template < typename T, int N>void func(){ T a[N] = {0};

2020-06-28 19:01:41 341

原创 类模板深度分析 多参数 重定义 特化

类模板可以定义任意多个不同类型的参数类模板可以被特化指定类模板的特定实现部分类型参数必须显示指定根据数据结构参数分开实现类模板类模板的特化类型部分特化 – 用特定规则约束类型参数完全特化–完全特化显示指定类型参数#include <iostream>#include <string>using namespace std;template<typename T1, typename T2 >class Test{public

2020-06-28 15:20:55 319

原创 类模板的概念和意义

类模板存储和组织数据元素类数据组织的方式和数据元素的具体类型无关如:数组类,链表类,Stack类,队列类等规则类模板的应用只能定义具体类型,无法自动推导使用的具体类型定义对象声明泛指类型T可以出现杂类模板的任意地方编译器堆类模板的处理方式和函数模板相同从类模板通过具体类型产生不同的类在声明的地方对类模板代码本身进行编译在使用的地方对参数替换后的代码进行编译#include <iostream>#include <string>us

2020-06-28 14:27:29 1998

原创 深入理解函数模板

深入理解函数模板编译器从函数模板通过具体类型产生不同的函数编译器会对函数模板进行两次编译对模板代码进行编译(语法检查)对参数替换后的代码进行编译注意:函数模板本身不允许隐式类型转换自动推导时,必须沿河匹配显示类型指定时,能够进行隐式类型转换#include <iostream>#include <string>using namespace std;class Test{ Test(const Test&);public:

2020-06-28 11:26:03 169

原创 函数模板的概念和意义

C++交换变量定义宏代码块 vs 定义宏函数#include <iostream>#include <string>using namespace std;#define SWAP(t, a, b) \do \{ \ t c = a; \ a = b; \ b = c; \}while(0)void Swap(int& a, int&b){ int c = a; a =

2020-06-28 10:51:35 211 1

原创 经典问题四 之强制类型转换

继承中强制类型转换dynamic_cast是与继承相关的类型转换关键字dynamin_cast要求相关类中必须有虚函数用于直接或间接继承关系的指针(引用)之间指针转换成功:得到和目标相同的指针转换失败:空指针引用成:目标相同的引用败:异常信息编译器会检查dynaminc_cast的使用是否正确类型转化的结果只能在运行阶段才能得到#include <iostream>#include <string>using na

2020-06-28 10:05:30 102

原创 经典问题四 之构造、析构、虚函数

构造函数是否成为虚函数构造函数不可能成为虚函数在构造函数执行结束后,虚函数表指针才会被正确的初始化析构函数可以成为虚函数建议在设计类时将析构函数声明为虚函数#include <iostream>#include <string>using namespace std;class Base{public: Base() { cout << "Base()" << endl;

2020-06-28 09:51:30 80

原创 经典问题四 之new malloc delete free

new malloc 区别delete free 区别new malloc 区别new是C++关键字malloc是C库提供函数new以具体类型为单位进行内存分配malloc以字节为单位进行内存分配new在申请内存空间时可以进行初始化(触发构造函数)malloc仅跟需要申请定量的内存空间对象创建只能靠newmalloc不适合面向对象的开发#include <iostream>#include <string>#include <cstdlib&g.

2020-06-28 09:29:36 45

原创 多重继承 虚继承

多重继承一个类有多个父类子类拥有所有父类的成员变量和函数子类对象可以当做任意父类对象使用规则#include <iostream>#include <string>using namespace std;class BaseA{ int ma;public: BaseA(int a) { ma =a; } int getA() { return ma; }};class BaseB{ int mb;public: Bas

2020-06-27 21:20:43 167

原创 抽象类和接口

面向对象中的抽象类用于现实世界的抽象概念只能是定义类型,不能产生对象的类只能被继承并重写相关函数(没有必要创建对象)直接特征是相关函数没有完整的实现抽象类与纯虚函数C++语言没有抽象的概念C++通过纯虚函数实现抽象类C++虚函数只定义原型的成员函数一个C++类中存在纯虚函数就是味蕾抽象类纯虚函数语法规则class Shape{public:virtuial double area() = 0;};#include <iostream>#include &

2020-06-27 20:31:39 53

原创 类对象在内存布局、多态实现原理

class是一种特殊的struct在内存中class依旧可以看成是变量的集合class和struct遵循相同的内存对齐原则class的成员变量和成员函数是分开存放的每个对象有独立的成员变量,存栈、堆、全局数据区类所有对象共享类的成员函数,存代码段#include <iostream>#include <string>using namespace std;class A{ int i; int j; char c; double d;pub

2020-06-27 16:46:49 170

原创 多态_虚函数_重写

面向对象中期望的行为根据实际对象类型判断如何调用重写函数父类指针(引用)指向父类对象调用父类中定义的函数子类对象调用子类中定义的函数多态的概念根据实际对象类型决定调用函数的具体目标同样的语句在实际运行时有多种不同的表现形态C++ 关键字virtualvirtual 实现多态被virtual声明函数被重写后具有多态特性被virtual声明函数叫虚函数#include <iostream>#include <string>using na

2020-06-27 11:04:39 122

原创 同名覆盖引发的问题

父子间的赋值兼容子类是一种特殊的父类子类对象可以当做父类对象使用(兼容)子类对象可以直接赋值(或初始化)给父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象#include <iostream>#include <string>using namespace std;class Parent{public: int mi; void add(int i) { mi = i; } void add(int a, int b)

2020-06-27 10:19:33 157

原创 父子间的冲突

父子间的冲突子类是否能定义父类的重名变量#include <iostream>#include <string>using namespace std;class Parent{public: int mi;};class Child : Parent{public: int mi;};int main(){ Child c; c.mi = 100; cout << c.mi << endl; r

2020-06-27 09:42:21 92

原创 继承当中的构造与析构

继承当中的构造与析构父子类的构造函数初始化父类成员子类构造函数初始化必须对继承而来的成员进行初始化初始化列表或赋值调用父类构造函数初始化默认调用无参构造函数或默认参数构造函数显示调用初始化列表所有父类构造函数子类构造函数初始化#include <iostream>#include <string>using namespace std;class Parent{public: Parent() { cou

2020-06-26 22:39:42 60

原创 不同的继承方式

继承父类为啥要修饰符public继承中的public 、protected、private三种继承方式public继承父类成员在子类中保持原有访问级别private继承父类成员在子类中变为私有成员protected继承父类中公有成员变成保护程艳,其他成员保持不变= MAX{继承方式,父类成员访问属性}C++ 默认为private#include <iostream>#include <string>using namespa

2020-06-26 21:41:12 86

原创 继承中的访问级别__建议自己实现

继承中的访问级别子类是否能直接访问父类的私有成员#include <iostream>#include <string>using namespace std;class Parent{private: int mv;public: Parent() { mv = 1000; } int value() { return mv; }};class Child : public Parent{public: void addVa

2020-06-26 20:52:24 63

原创 继承的概念和意义

继承的概念和意义组合关系整体和部分的关系,电脑的组成#include <iostream>#include <string>using namespace std;class Memory{public: Memory() { cout << "Memory()" << endl; } ~Memory() { cout << "~Memory()" &l

2020-06-26 20:01:22 189

原创 类型转换函数

#include <iostream>#include <string>using namespace std;int main(){ short s = 'a'; unsigned int ui = 1000; int i = -2000; double d = i; cout << "d = " << d << endl; cout << "ui = " &

2020-06-26 19:30:14 216

原创 前置操作符与后置操作符 重载

前置操作符与后置操作符i++;//i作为返回值,i自增1++i;编译后丢失原生意义++操作符重载全局函数和成员函数均可进行重载重载前置++不要额外参数重载后置++需要额外的int占位参数#include <iostream>#include <string>using namespace std;class Test{ int mValue = 0;public: Test(int i) { mValue = i; } int valu

2020-06-26 16:20:09 118

原创 逗号操作符

逗号操作符多个表达式连接值为最后一个表达式的返回值顺序从左向右逗号表达式的陷阱#include <iostream>#include <string>using namespace std;void func(int i){ cout << "func() : i = " << i << endl;}int main(){ /*int a[3][3] = { (0, 1, 2)

2020-06-26 15:43:21 57

空空如也

空空如也

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

TA关注的人

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