自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数组模拟哈希表

哈希表能使数据通过一种映射方式存放到一种范围更小的数据空间中,比如-1e9~1e9, 存放到1e5的空间中, 并且能够快速实现存放和查找的操作,删除的话一般很少,可以看作是一次查找,找到之后打一个标记,即为删除实现方式开放寻址法a为一个整数b = a%m把a放在角标为b的数组中,当发生冲突时,即之前有元素已经占据了b这个位置,则向后移动,直至找到一个空位置注:m为一个质数时,冲突的可能性最小拉链法a为一个整数b = a%m把a放在角标为b的数组中,当发生冲突时,在b这个位置后面拉一条链

2021-05-26 20:09:55 267

原创 c++面向对象中的多态全解

虚函数定义:前面有virtual关键字的成员函数就是虚函数, virtual 关键字只用在类定义里的函数声明里,写函数体时不需要class base{ virtul int get();};int base::get(){}多态的表现形式一派生类的指针可以赋值给基类指针通过基类指针调用基类和派生类中的同名虚函数时若指针指向一个基类对象,那么被调用的是基类的虚函数若指针指向一个派生类对象,那么被调用的是派生类的虚函数示例class CBase{ public: vir

2021-05-19 17:18:08 228

原创 c++面向对象运算符重载

运算符重载运算符重载的含义:运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。目的:扩展C++中提供的运算符的适用范围,使之能作用于对象运算符重载的形式运算符重载的实质是函数重载可以重载为普通函数,也可以重载为成员函数把含运算符的表达式转换成对运算符函数的调用把运算符的操作数转换成运算符函数的参数运算符被多次重载时,根据实参的类型决定调用哪一个运算符模板返回值类型 operator 运算符 (形参表){

2021-05-19 12:26:34 232

原创 常量成员函数

如果不希望对象的值被改变,则定义该对象的时候可以在前面加const关键字class Sample{ private : int value; public: Sample() {} void SetValue(){};};const Sample Obj; // 常量对象Obj.SetValue(); // 错误,常量对象只能使用构造函数,析构函数和有cosnt说明的函数(常量方法)在类的成员函数后面加上从上图关键字,则该成员函数成为常量成员函数常量成员函数内部不能改变属性

2021-05-18 14:56:46 221

原创 友元

友元分为友元函数和友元类两种友元函数:一个类的友元函数可以访问该类的私有成员示例class CCar; // 提前声明CCar类,以便后面的CDriver类使用class CDriver{ public: void ModifyCar( CCar *pCar);// };class CCar{ private: int price; friend int MOsExpensiveCar( CCar cars[], int total); friend void CDriver

2021-05-18 14:30:21 114

原创 成员对象和封闭类

定义 有成员对象的类叫封闭类示例class Ctyre{ // 轮胎类 private: int radius; int width; public: Ctyre(int r, int w): radius(r), width(w){}};class CEngine{ // 引擎类};class CCar{ // 汽车类 private: int price; CTyre tyre; CEngine engine; public: CCar(int p,i

2021-05-18 14:05:15 144

原创 C++面向对象静态成员

静态成员 :在定义前面加了static关键字的成员例如:class CRectangle{ private: int w, h; static int nTotaArea; // 静态成员变量 static int nTotalNumber; public: CRectangle(int w_, int h_); ~CRectangle(); static void PrintTotal(); // 静态成员函数}普通成员变量每个对象各自一份, 静态成员变量一共就一

2021-05-18 13:21:12 162

原创 C++面向对象中的this指针

作用:指向成员函数所作用的对象非静态成员函数中可以直接使用this来代表指向该函数作用的对象指针例如:class Complex{ public: double real, imag; void Print(){ cout << real << "," << imag;} Compelx(double r, double i): real(r), iamg(i) { } Compelx AddOne(){ this->real++; /

2021-05-18 12:22:39 139

原创 析构函数

特点名字和类名相同, 在前面加个‘~’, 没有参数和返回值,一个类最多有一个析构函数析构函数对象消亡时被自动调用,可以定义析构函数做对象消亡时的善后工作,比如释放内存等编译器可自动生成析构函数,但是实际上什么都没做如果定义了析构函数,则编译器不在生成析构函数析构函数和数组对象数组生命期结束时,对象数组的每个元素的析构函数都会被调用class CTest { public : ~Ctest() { cout << "destructor called " << e

2021-05-18 10:28:35 169

原创 构造函数详细介绍

构造函数基本概念名字和类名相同,可以有参数,不能有返回值作用是对对象进行初始化,如给成员变量赋值如果定义类时,没有写构造函数,则编译器生成一个无参的构造函数,不进行任何操作如果用户自己定义了构造函数,则编译器不再生成构造函数对象生成时构造函数被调用,对象一旦生成,就再也不在其上执行构造函数了一个类可以有多个构造函数重要:有时对象没有 被初始化就被使用会导致程序出错调用默认构造函数示例:class Complex{ private: double real, imag; pub

2021-05-18 09:54:05 618

原创 数组模拟并查集

并查集主要能高效实现以下操作判断两个元素是否属于一个集合判断某个元素属于哪个集合数组模拟并查集的思想数组的角标是当前元素的值,数组存放的值是该角标一元素的父亲节点利用find()函数递归寻找元素父亲节点的时候,我们将所有元素都指向树的根节点一道模板题链接:https://www.acwing.com/problem/content/description/838/实现#include<bits/stdc++.h>using namespace std;const

2021-05-08 13:15:02 137 1

原创 类和对象入门

类成员的可访问范围下列关键字说明类成员的访问范围private: 私有成员, 只能在成员函数内访问public: 公有成员,可以在任何地方访问protected: 保护成员,以后再说以上三个关键字出现的次数和顺序没有任何限制定义一个类class className{ private: 私有属性和函数 public: 公有属性和函数 protected: 保护属性和函数};如果某个成员前面没有上述关键字,则被缺省地认为是私有成员例如:class Man{ int n

2021-05-04 17:09:26 122

原创 内联函数,函数重载,函数缺省参数

内联函数产生背景:函数的调用是有时间开销的, 如果函数本身只有几条语句,执行非常块,而函数被反复执行很多次, 相比较函数调用产生的开销会比较大作用机制: 将内联函数代码块插入到语句处举例inline int Max(int a,int b){ if(a>b) return a; return b;}函数重载一个或多个函数名字相同,但是参数个数或参数的类型不相同,叫做函数的重载例如以下三个函数是重载关系int Max(double f1,double f2) { }int Ma

2021-05-04 15:50:25 124

原创 动态内存分配

动态内存分配第一种用法p = new T;T 是任意类型的名字, p是类型为 T * 的指针动态分配出一片大小为 sizeof(T) 的内存空间大小,并把起始地址赋给p, 例如int * pn;pn = new int;* pn = 5;第二种用法p = new T[N];T 为类型名,p 类型为 T* 的指针N 要分配数组元素的个数,可以是整型表达式动态分配出一片 N*sizeof(T) 字节的内存空间大小,并把首地址赋给p,例如:int * pn;int i = 5;

2021-05-04 15:21:34 108

原创 const 关键字

const 关键字定义常量const int MAX_VAl = 23;const string SCHOOL_NAME = "SCU";定义常量指针不能通过常量指针修改其指向的内容int n, m;const int *p = &n;*p = 5; // 编译出错n = 4; // okp = &m; // ok不能把常量指针赋值给非常量指针,但是反过来可以const int *p1; int *p2;p1 = p1; // okp2 = p

2021-05-04 15:00:34 64

原创 引用

引用的概念定义方式类型名 & 引用名 = 变量名int n = 4;int &r = n; // r引用了n, r的类型是int &作用某个变量的引用, 等价于这个变量, 相当于该变量的一个别名int n = 4;int &r = n;r = 4;cout << r; // 输出4cout << n; // 输出4n = 5;cou t << r; // 输出5注意事项定义引用时一定要将其初始化

2021-05-04 14:36:25 117

空空如也

空空如也

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

TA关注的人

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