- 博客(39)
- 收藏
- 关注
原创 C++进阶学习(三):std::move的使用
左值、右值、左值引用和右值引用左值:能被取地址的、有名称的值。右值:不能被取地址的值,包括临时变量,函数的返回值int a=2;//a是左值,2是右值int b=3;//b是左值,3是右值int c=(a+b);//c是左值,(a+b)是右值左值引用:语法:数据类型 & 数据名称=左值;右值引用(C++11新增特性):语法:数据类型&& 数据名称=右值;左值引用对应左值,右值引用对应右值 int a = 2; int b = 3; int& d
2021-02-28 14:46:07 577
原创 C++学习进阶(一):四种cast的用法
upcast:派生类转换为基类downcast:基类转换为派生类dynamic_cast语法:dynamic_cast<待转换类型>(待转换数据)dynamic_cast在运行时处理dynamic_cast不能用于内置基本数据类型的强制转换,主要是用于类的指针或者类的引用的转换上允许upcast,也允许downcast。在进行downcast时,dynamic_cast会进行类型检查。只有强制转换的指针指向的对象实际类型与将要转换后的类型相同时才能转换成功,还要求基类对象必须含有.
2021-02-26 18:17:55 748
原创 Linux学习笔记(二):系统状态检测命令
ifconfig使用方法:ifconfig 网络设备 参数功能:查看本机当前的网卡配置与网络状态等信息ether0:网卡名称mtu:最大传输单位inet:IPv4地址inet6:IPv6地址ether:MAC地址RX packets:接收的数据包数,bytes:接收的比特RX errors:接收的错误的包数,dropped:丢失的包数,overruns:因为速度过快丢失的包数,frame:因为frame错误丢失的包数TX packets:发送的数据包数,bytes:发送的比特TX e
2021-02-14 21:32:54 394
原创 Linux学习笔记(一):常见系统工作命令学习
man命令使用方法:man 参数 命令名称功能:查看命令的详情页面# man free的结果:在description一栏可以看到free 命令显示的total ,used,free的详细意思,在option一栏中可以看到free命令参数,在FILES一栏可以看到free用到的文件是/proc/meminfo系统工作命令echo使用方法:echo 参数 字符串功能:终端设备上输出字符串或变量提取后的值参数说明:-n: 输出字符串后换行-e: 字符串中可以使用转义字符
2021-02-13 16:27:08 202
原创 C++学习笔记(十九):模板
模板为了实现泛式编程两种模板机制:函数模板和类模板函数模板建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。定义一个函数模板:template<typename T>//函数模板用typename,类模板用class.函数模板和类模板都用class也没错T sum(T a,T b){ return a+b;}函数模板的调用: //1.自动类型推导 double aa=12.3; double bb=12.4;
2021-02-06 17:16:51 111
原创 C++学习笔记(十八):文件操作
文件类型:文本文件:文件以文本的ASCII码形式存储二进制文件:文件以文本的二进制形式存储文件打开方式:打开方式功能ios::in打开文件用于读取数据。文件不存在则打开出错ios::out打开文件用于写入数据。如果文件不存在,则新建该文件,文件原来就存在,则清除原来内容ios::app打开文件,用于在其尾部添加数据。如果文件不存在,则新建该文件ios::ate打开一个已有的文件,并将文件读指针指向文件末尾。如果文件不存在,则打开出错ios::t
2021-01-28 12:43:57 116
原创 C++学习笔记(十七):多态
分类静态多态:函数重载和运算符重载,编译阶段确定函数地址(地址早绑定)动态多态:派生类和虚函数实现运行时多态,运行阶段确定函数地址(地址晚绑定)动态多态地址早绑定:class A{public: void test(){ cout<<"A"<<endl; }};class aSon:public A{public: void test(){ cout<<"aSon"<<endl;
2021-01-22 19:26:15 211 1
原创 C++学习笔记(十六):继承
继承的好处:减少重复代码语法:class 子类(派生类) :继承方式 父类(基类)继承方式三种继承方式:public 继承(公有继承)父类中的public权限在子类中是public权限父类中的protected权限在子类中是protected权限父类中的private权限在子类中不可访问protected 继承(保护继承)父类中的public权限在子类中是protected权限父类中的protected权限在子类中是protected权限父类中的private权限在子类中不可访问
2021-01-17 16:44:25 145
原创 C++学习笔记(十五):运算符重载
对于已有运算符重新定义其功能加号运算符重载通过成员函数重载加号class Person{private : int salary;public: int age; Person(){ } Person(int _age,int _salary){ age=_age; salary=_salary; } Person operator +(const Person &p){ Per
2021-01-14 11:10:54 135
原创 C++学习笔记(十四):友元
友元:让一个函数或者一个类,能够访问另一个类中的私有成员全局函数做友元class Person{ friend void test(Person p);private : int salary;public: int age; Person(int _age,int _salary){ age=_age; salary=_salary; }};void test(Person p){ cout<<p
2021-01-10 10:08:53 83
原创 C++学习笔记(十三):C++对象模型
成员变量和成员函数成员变量和成员函数分开存储只有非静态的成员变量才时类的对象静态成员变量、静态成员函数、非静态成员函数在内存中只有一份空对象所占内存空间为:1字节(主要为了区分不同空对象)this指针this 指针隐含在每一个非静态成员函数内的一种指针常量,并且指向被调用的成员函数所属的对象,可直接使用。作用:解决名称冲突class Person{private: int age;public: Person(int age){ this->age
2021-01-09 10:25:16 151 1
原创 C++学习笔记(十二):静态成员
静态成员静态成员变量语法: static 数据类型 数据名;特点:所有对象共享一份数据在编译阶段分配内存(全局区)类内声明,类外初始化如果不调用静态成员变量,则不初始化静态成员变量也可以;如果调用了静态成员变量,则必须类外进行初始化,否则出错。class Person{public: string name; int age; static string nation="China";//错误操作,不能类内初始化}class Person{public
2021-01-08 10:59:53 114
原创 C++学习笔记(十一):初始化列表、类成员
初始化列表语法:类名():成员属性1(值1),成员属性2(值2)…{函数体}class Person{ string name; int age;public: Person(string _name,int _age):name(_name),age(_age){ }};类作为成员语法:class A{...};class B{ A a;..};注意事项:在A作为B的成员时,对B进行实例化,先调用A的构
2021-01-08 10:56:44 130
原创 C++学习笔记(十):构造函数和析构函数
构造函数和析构函数构造函数:给对象进行初始化,主要为对象的成员属性。析构函数:清理对象。必须有构造函数和析构函数,一般控制权限都是public。如果用户不提供,则使用编译器提供的构造函数和析构函数,编译器提供的构造函数和析构函数是空实现(对成员属性什么都不做)。构造函数和析构函数编译器自动调用先创建构造函数的实例后调用析构函数构造函数:语法:类名( ) { }没有返回值,也不需要写void函数名称和类名相同 构造函数可以有参数,也可以重载调用对象时自动调用,且只调用一次。
2021-01-08 10:54:24 156
原创 C++学习笔记(九):封装
c++面向对象的三个特性:封装、继承和多态。封装意义:将属性和行为作为一个整体,表现生活中的整体。将属性和行为加以权限控制。属性:用数据描述行为:用函数描述权限:public(公共权限):类内可以访问,类外也可以访问。protected(保护权限):类内可以访问,类外不可以访问。儿子可以访问父亲的保护权限内容。private(私有权限):类内可以访问,类外不可以访问。儿子不可以访问父亲的私有权限内容。成员属性一般是private意义:可以自己控制读写权限读操作:获取成员属
2021-01-07 16:21:15 92
原创 C++学习笔记(八):函数高级
函数参数默认值语法:返回值类型 函数名 (形参 = 默认值){ }bool cmp(int b,const int a=20){ return a<b;}注意事项:函数调用时传入数据,则使用传入数据,没有传入数据时使用默认值。如果某个形参有默认值,其后面所有形参必须有默认值。函数声明和函数实现,只能有一个有参数默认值。函数占位参数语法: 返回值类型 函数名 (形参类型){ }int add(int a,int b,int ){//最后一个就是占位参数}.
2021-01-04 13:25:35 97
原创 C++学习笔记(七):引用
作用:给变量起别名引用的语法语法: 数据类型 &别名 = 原名;int a=10;int &b = a;b=20;//此时a=b=20引用的注意事项引用必须初始化int &b = a;//√int &c;//×,未初始化引用一旦初始化后就不能更改引用必须引一块合法的内存空间int& ref=10;//错误操作const int& ref=10;//正确操作,相当于int temp=10;const int &
2021-01-04 12:30:11 142
原创 C++学习笔记(六):程序的内存模型
程序运行前有代码区和全局区,运行后才有栈区和堆区。代码区二进制存放cpu执行的机器指令。特点:共享(内存中只有一份)、只读全局区存放全局变量、静态变量和常量等常量包括字符串常量和const修饰的常量const修饰的常量包括const修饰的全局变量和const修饰的局部变量。const修饰的局部变量不放在全局区。栈区存放局部变量,形参 不要返回局部变量的地址。堆区程序员分配释放,如果程序员不释放,操作系统将会在程序结束后释放。new的数据放在堆区。new作用:动态申请内存语法:
2021-01-03 18:33:32 78
原创 C++学习笔记(五):指针
指针可以用于保存一个地址。指针的定义语法:数据类型 * 指针变量名 = &变量名指针的使用指针前加 * 代表解引用,找到指针指向的内存中的数据指针所占内存在32位系统下,无论是什么数据类型,指针所占内存都是4个字节64位系统下,指针所占内存都是8个字节空指针int *p = NULL;//指针变量指向内存中编号为0的空间空指针不能被访问,因为编号为0的空间被系统占用,用户不能访问。野指针指针变量指向非法的内存空间const修饰指针常量指针语法:const 数据类型
2021-01-03 13:33:56 129
原创 C++学习笔记(四):函数
函数定义的语法返回值类型 函数名 (参数列表){//函数定义的参数为形参 函数体语句 return表达式}函数调用的语法函数名(参数)//函数调用的参数为实参调用函数时,将实参的值传给形参。形参的改变不会影响实参。函数的声明函数在定义之前先告诉编译器函数的存在。语法:返回值类型 函数名(参数列表);函数的声明可以多次,函数的定义只能由一次。函数的分文件编写在头文件(.h文件)写函数的声明,在源(.cpp)文件写函数的定义。...
2020-12-29 17:48:59 66
原创 C++学习笔记(三):运算符
算数运算符运算符号功能+做单目运算符表示正数,做双目运算符表示加法-做单目运算符表示负数,做双目运算符表示减法*乘法/除法%取模运算(小数不允许做取模运算)++i++表示先进行表达式运算再将i的值增加1,++i表示先将i的值增加1再进行表达式运算- -i- -表示先进行表达式运算再将i的值减少1,- -i表示先将i的值减少1再进行表达式运算赋值运算符运算符号功能=将右值赋给左值+=将左值加上右值再赋
2020-12-29 11:29:49 118
原创 C++学习笔记(二):数据类型
整型整型用于存储整数数据类型占用空间short(短整型)2字节int(整形)4字节long(长整型)Windows为4字节,Linux32位为4字节,Linux64位为8字节long long(长长整型)8字节浮点型浮点型数据一般用于存储小数数据类型占用空间有效数字范围float(单精度)4字节7位有效数据double(双精度)8字节15~16位有效数据字符型char类型用于存储单个字符,占用空间为1字节
2020-12-28 16:40:51 69
原创 C++学习笔记(一):变量、常量和命名规则
C++学习笔记(一):变量、常量和命名规则变量变量的意义:方便管理内存空间变量语法:数据类型 变量名 = 变量初始值;常量常量的意义:用于记录程序中不可更改的数据常量的语法:宏常量:#define 常量名 常量值const 数据类型 常量名 = 常量值;const 和define 定义常量的区别:define 在编译的预处理阶段起作用,const在编译运行的时候起作用。define无脑进行替换,不进行类型检查,const进行类型检查。define占用代码段的空间
2020-12-28 15:26:44 1051
原创 数据结构(六):树和二叉树
树是一种有层次的数据集合,数据之间的关系是非线性。特点是:除了根节点外其他结点都有唯一前驱,所有结点都有零个或者多个后驱。二叉树:每个结点至多有两棵子树。存储方式:顺序存储结构:typedef int datatype;const int MAXSIZE=1000;//指路创建法struct bitTree{ datatype data[MAXSIZE]; //初始化 void init(){ memset(data,-1,sizeof(data
2020-08-23 21:14:50 125
原创 数据结构(五):队列
队列是一种操作受限的线性表,它只能在表的一端插入,在另一端删除。特点是先进先出(FIFO)。其存储方式有顺序存储和链式存储。顺序队列:顺序队列会出现假溢出现象。如图。虽然数组前面还有空间,但是由于rear已经指向了数组的最后,队列无法再入队,形成了假溢出。解决的办法是使用循环队列。typedef int datatype;const int MAXSIZE=10;struct sqQueue{ datatype data[MAXSIZE]; int top,rear;
2020-08-11 22:09:26 233
原创 栈(实现链栈和顺序栈)
栈是一种操作受限的线性表。它只允许在线性表的一头插入,在另一头删除。特点就是先进先出。按不同的存储结构,可以将栈分为顺序栈和链栈。顺序栈的实现:typedef int datatype;const int MAXNUM=1000;struct sqStack{ datatype data[MAXNUM]; int top; //初始化 void init(){ top=-1; } //判断栈空 bool isEmp
2020-08-09 21:18:46 256
原创 带头节点的双向链表
与单链表相比,增加了指向前驱的指针,便于找到当前结点的前驱。图源百度初始化typedef int datatype;struct nodes{ datatype data; struct nodes *last,*next;};struct List{ struct nodes *head;};//创建头节点void init(struct List *List){ nodes *head=(nodes*)malloc(sizeof(nod
2020-05-09 15:31:15 188
原创 2021年王道数据结构课后题
使用的顺序表是https://blog.csdn.net/killers_999/article/details/104418578这里。1.从顺序表中删除具有最小值的元素(假设唯一 )并由函数返回被删元素的值。 空出的位置由最后一个元素填补, 若顺序表为空则显示出错信息并退出运行。bool minnum(struct Array *arr,datatype *data){...
2020-05-05 22:23:10 3929
原创 eclipse运行maven项目出现web.xml is missing and <failOnMissingWebXml> is set to true错误
eclipse运行maven项目出现web.xml is missing and <failOnMissingWebXml> is set to true错误。解决方法:在pom.xml中添加如下代码: <build> <plugins> <plugin> <groupId>org.apache.maven...
2020-05-01 14:44:29 182
原创 eclipse运行maven项目404错误的可能原因
解决方法:项目---->properties---->deployment assembly,添加删除至如下:
2020-05-01 14:40:14 2114
原创 eclipse创建maven项目时添加依赖包报错
在创建maven项目时,出现这样的报错。Misssing artifact org.apache.maven.wagon:wagon-ssh-external:jar:1.0-beta-2解决方法:右键项目,maven->update project,显示如下:勾选force update of snapshots/releases->OK耐心等待,如果还是出现...
2020-04-14 20:50:34 585
原创 模拟动态数组及其一系列操作
初始化typedef int datatype;struct Array{ datatype *fData;//第一个元素的地址 int max_size;//动态数组的最大长度 int length;//动态数组的有效长度};void init(struct Array *arr,int maxsize){ arr->fData = (data...
2020-02-20 21:33:32 877
原创 博弈论学习(一)
一些学习过程的记录。博弈的前提是博弈者知道自己所需要的是什么。结论一:不要选择严格劣势策略。Don't play a strictly dominated strategy.结论二:理性选择造成次优结果。...
2020-02-18 21:17:25 165
原创 Kuangbin带你飞 基础DP专题
bin神的DP专题真的有好多啊,整理一下做过的基础DP专题。HDU1029Ignatius and the Princess IVhttp://acm.hdu.edu.cn/showproblem.php?pid=1029题意给出n,和n个数,找出至少出现(n+1)/2次的数字。思路至少出现(n+1)/2次,如果这个数存在那么排序后位于中间位置的一定是这个特殊的数。H...
2019-04-23 21:38:24 300
原创 博弈相关
博弈巴什博弈题目描述:n个物品,两个人轮流取,每个人至少取一个,最多取m个,先将物品取光的的人获胜。原理:我们先考虑最简单的局面,如果只有(m+1)个物品,先手无论怎么取,后手都能将剩下的一次取完获胜。因此可以知道(m+1)是一个先手必败局面。对于(m+1)*k个物品同理可知,无论先手怎么拿,后手都可以合法地拿走一些物品,使剩下的依然是(m+1)的整数倍,直到先手遇到(m+1...
2019-04-14 23:38:34 294
原创 无头结点的单链表一系列操作
无头结点的单链表的一系列操作没有头结点的链表,C++实现其初始化,建立,插入,删除,查询,计算长度,输出。感觉没有头结点好多操作都变得复杂了那么一丢丢。目录 无头结点的单链表的一系列操作初始化建立查找插入删除计算链表长度打印链表初始化typedef int datatype;struct nodes{ datatype data...
2018-12-21 17:21:15 3740
原创 codeforces 1076C Meme Problem
题意有非负整数d,如果d=a+b,d=a*b,输出Y a b,(a,b是非负浮点型,保留九位有效数字),如果不能分,输出N。sample input76901459991000sample outputY 67.985071301 1.014928699Y 0.000000000 0.000000000NY 2.000000000 2.000000000...
2018-11-14 20:34:29 241
原创 HDU 1495 非常可乐
题意:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,1...
2018-10-23 19:39:23 89
原创 UVA1586 Molar Mass
题目 输入一个由C,H,O,N组成的分子式,输出它的分子量,其中分子的下标不会超过99,分子式是一个不超过80的字符串SAMPLE INPUT4CC6H5OHNH2CH2COOHC12H22O11SAMPLE OUTPUT12.01094.10875.070342.296题解没啥可说的,大水题。。。字符串储存,逐个去找原子的数目,结果保留三位小数。渣代...
2018-10-20 19:31:17 119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人