自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++语言学习记录-33:容器与迭代器

容器C++提供了一些自然、通用的容器,这些容器能够容纳用户定义的类型,并提供各种操作,而不需要强制用户定义的类型具有某种结构。例如向量、链表、队列都属于容器。这些容器提供的操作不依赖容器包含的类型迭代器迭代器是一种检查容器内的元素并遍历元素的数据类型,标准库为每一种标准容器定义了一种迭代器类型,迭代器类型提供了比下标操作更通用化的方法:所有标注库容器都定义了相应的迭代器类型。迭代器主要分为五类:输入迭代器输出迭代器前向迭代器双向迭代器随机存取迭代器顺序容器向量向量属于顺序容器,用

2021-02-26 21:45:14 198

原创 C++语言学习记录-33:类型的识别与转换

类型识别类型识别指的是只有一个指向基类的指针或引用时,确定一个对象的准确类型。运行时类型识别机制提供了很大的灵活性,但是需要付出一定的效率。在大多数情况下,派生类的特殊性可通过在基类中定义虚函数加以体现,运行时类型检查只是一种辅助性手段运行时的类型识别C++是一种静态类型语言,其数据类型是在编译的时候就确定的,运行过程中不会发生更改,然而由于面向对象的多态性的要求,C++中的指针或引用本身的类型,可能与它实际代表、指向或引用的类型不一致,往往需要将一个多态指针转换为其实际指向对象的类型,这就需要在运

2021-02-25 16:12:58 154

原创 C++语言学习记录-32:模板

模板的作用C++中,模板的作用就是实现代码的重用,通过将某种数据类型定义为参数,然后将不同的数据类型按照实参形式传送而实现代码重用比如如下的程序int min(int x, int y){return (x<y)? x:y;} float min(float x, float y) {return (x<y)? x:y;} double min(double x, double y) {return (x<y)?x:y;}在以上的例子中,同样的功能和标识符的函数,

2021-02-23 23:10:51 150

原创 C++语言学习记录-31:异常处理

异常处理是一种错误处理机制,提高了C++程序的安全性,在团队开发过程中,可以通过异常处理机制降低产生错误的可能性,从而提高程序的可靠性。异常处理机制C++中异常往往使用类进行实现,以栈满或空的异常为例class popOnEmtpy{/*内部为检测栈空的程序*/};class pushOnFull{/*内部为检测栈满的程序*/};template<typename T> void Stack<T>::Push(const T&data){ if(IsFull()

2021-02-22 17:31:31 150

原创 C++语言学习记录:文件相关的几个问题补充

get() 和getline()cin.getline()和cin.get()都是对输入进行行的读取,即一次读取一整行而不是单个字符,但是二者仍然有一定区别cin.get()每次读取一整行并把由enter生成的换行符留在输入队列中,而cin.getline()每次会读取一整行,但是会将enter生成的换行符抛弃缓存同步的实现对文件流进行操作时,他们与一个streambuf类型的缓存联系在一起,而这个缓存实际上是一块内存空间,作为流和物理文件的媒介例如一个输出流中,每一次一个成员函数put被调用(即

2021-02-09 15:57:29 82

原创 C++语言学习记录-30:使用ifstream中的几个成员函数

get()函数get函数的作用是读取该类的对象的一个字符并且将该值作为调用函数的返回值。调用get函数时,get函数会自动向后读取下一个字符,直到遇到文件结束符,则返回EOF作为函数的结束#include<iostream>using namespace std;#include<string>#include<fstream>int main(){ ifstream infile; char value; infile.open("a.txt");

2021-02-08 16:46:33 775

原创 C++语言学习记录-29:文件处理

C++中文件的基本概念C++中,文件可以被看做是一个连续的字符串集合,这个字符串集合没有大小。C++中,字符串是以流的形式存在的,因此,文件也可以看做是一个流的集合,被称为流式文件,增加了文件处理的灵活性。C++对文件的操作可以概括为以下几个步骤:1.建立文件流对象2.打开或建立文件3.进行读写操作4.关闭文件对于文件进行I/O操作的流类主要有fstream(输入输出文件流)ifstream(输入文件流)ofstream(输出文件流),这三个类都包含在头文件fstream中。若ifstrea

2021-02-08 15:28:38 120

原创 公共方法

公共方法指的是高级数据类型都可以使用的函数方法内置公共方法len()统计元素个数del()删除变量max()容器中元素的最大值, 若为字典,则比较的是键的大小min()容器中元素的最小值cmp(item1, item2)比较两个值,-1为小于,0为等于,1为大于(python3中已经取消,但是可以使用比较运算符,字典不能比较大小)切片可以对字符串和列表进行切片如:[1,2,3,4,5,6][1,2]输出结果为2,3运算符合并:+重复:* 如[“dqa”]*2输出[“dqa”,“d

2021-01-29 13:44:13 493

原创 Python中字符串的操作

字符串的定义与C++不同,Python的字符串定义可以使用双引号和单引号两种,但是一般在开发中使用双引号。单引号可以在字符串内部本身有双引号而又不想使用转义字符的时候使用遍历字符串的方法for c in str: print(c)字符串长度len(str)在字符串中某子串出现的次数str.count(str1)某子串出现的位置str.index(str1)若子字符串不存在,程序报错...

2021-01-29 12:20:21 73

原创 Python中字典的操作

以下实例的初始字典均为diction={"name":"jack" "age":20}取值print(diction[“name”])取值的操作就是将键输入函数以得到值增加和修改diction[“major”]=“computer”这一操作可以在字典中增加major键值对diction[“age”]=18这一操作将字典中的年龄改成了18key存在则修改键值对,不存在则新增键值对删除diction.pop(“name”)name键值对被删除统计键值对数量len(dictio

2021-01-29 12:05:31 93

原创 C++语言学习记录-28:静态成员

静态成员使用静态成员的目的是为了实现数据之间的共享,使用全局变量可以实现数据共享,但是全局变量具有其局限性,因此主要通过使用类的静态成员进行数据的共享。静态数据成员在类中的静态成员可以实现多个该类的对象之间的数据共享,在实现共享的同时还保证了数据的安全性,不会被外部成员访问.因此,一个类的静态成员是所有该类的对象的成员,而不是具体某一对象独有的成员。使用静态成员函数的另一个好处是节约内存空间,对于同一个类的多个对象来说,静态数据成员是所有类的对象所共有的,储存在固定的内存空间中,供所有类的对象共同使

2021-01-25 20:46:50 183

原创 C++语言学习记录-27:虚函数和抽象类

虚函数在函数定义之前加上关键字virtual的函数被称为虚函数。虚函数是实现多态性的手段之一,也就是虽然它有一样的声明,但是具体下到不同的类当中,实现的方法又有所差别下面通过一个实例来理解虚函数#include<iostream>using namespace std;class base{public: virtual void vfunc() { cout << "This is base's vfunc" << endl; }};cla

2021-01-18 16:02:18 259

原创 C++语言学习记录补充:二维数组和二级指针之间的关系

利用指针访问二维数组数组名本身就具有指针的性质,因此我们在前面就知道实际上可以使用数组名当做地址使用,比如以下代码:int a[100];cout<<*(a+1);实际上,本程序会输出数组第二位即1号位置上的数值,星号是一个指针运算符,用于将地址转换为相对应的值。这样的性质也可以在二维数组甚至是多维数组中使用,比如:#include<iostream>#include<cstring>using namespace std;int main(){

2021-01-09 16:01:34 135

原创 C++语言学习记录-26:继承与派生

类的继承类是C++面向对象编程的一个重要的组成部分,在之前也做过一些介绍。类的继承问题将带我们更好地、更深入地认识类这一概念。子类继承父类的一些属性,这样就可以在不同的类型有相似的共同点时减小编程量,也因此在开发中十分重要。C++语言中,一个派生类可以从一个基类里面派生,也可以从多个基类当中派生,从一个基类中派生的过程被称为单继承,从多个基类中派生的继承被称为多继承。单继承的定义格式:class Dev: public Base;多继承的定义格式:class C: public A, pub

2021-01-08 22:40:19 157

原创 C++语言学习记录-25:链表简介

链表是代替数组的一个好用的工具

2020-12-29 19:07:06 103

原创 C++语言学习记录-24:this指针

成员变量和成员函数分开存储在一个类当中,成员变量和成员函数是分开存储的,而每一个非静态成员函数的调用实际上只会生成一个函数实例,即多个类型的对象会共用一套函数代码this指针上面的那“一块代码”是如何区分自己是被哪一块函数调用的?这里C++引入了this指针来解决这一问题。this指针将指向被调用的成员函数所属的对象。还是那一个经典的解释:当你走进了一间房子,但是这间房子的陈设和别的房子的是一模一样的,你对房子的陈设做了改变,那么你能知道你是对那一间房子做了改变吗?这样的问题也发生在函数上。看下面

2020-12-22 20:31:13 106

原创 C++语言学习记录-23:初始化列表

比方说要在一个类内对多个变量进行初始化操作class Example{public: Example(int a, int b, int c) { m_A = a; m_B = b; m_C = c; } int m_A; int m_B; int m_C;};void test01(){ Example e(10, 20, 30); cout<<e.m_A<<e.m_B<<e.m_C<<endl;}这样的效率就会

2020-11-22 13:17:11 91

原创 C++语言学习记录-22:深拷贝与浅拷贝

浅拷贝:单纯的赋值拷贝操作一般来说,编译器自带的复制构造函数都为浅拷贝函数,由于只是执行一个值传递指令,因此两个或多个对象最终指向的是同一个内存空间,从而在释放内存时带来错误深拷贝:在堆区重新申请空间进行拷贝操作使用new关键字重新再堆区开辟新的内存拷贝变量并储存在新的空间,因此会有两个地址案例:#include<iostream>using namespace std;class Person{public: Person(){ cout<<"Person 默

2020-11-18 22:18:28 118

原创 C++语言学习记录补充:构造函数调用规则

在默认情况下,系统会为一个函数提供这三种构造函数:默认构造函数、有参构造函数和复制构造函数,但是在一些情况下将不再提供其他函数,比如:当用户自定义有参构造函数时,编译器不再提供默认构造函数;当用户自定义拷贝构造函数时,编译器将不再提供构造函数。因此在实践过程中如果不书写了拷贝构造函数,但是仍需调用其他构造函数时需要自行设置...

2020-11-18 21:21:55 73

原创 C++语言学习记录补充:复制构造函数的使用时机

复制构造函数(即拷贝构造函数)一般会在三种情况下调用(以下案例的制作前提都默认为已经创建了一个可以被访问的属性完整的类)使用一个已经创建完毕的对象去初始化一个新对象void example01(){ Example e1(20); Example e2(e1);}值传递的方式给函数参数传值void func(Example e){...}void example(){ Example e; func(e);}以值方式返回局部对象Example func{

2020-11-16 23:15:03 105 1

原创 C++语言学习记录-21:封装

对前面提到的类再进行深入分析

2020-11-12 17:38:51 83

原创 CSS中的属性书写顺序

一般来说,在开发中属性的书写遵循以下顺序:1.布局定位属性,如:display/position/float/clear等2.自身属性,如:width/height/margin/padding/border/background等3.文本属性,如:color/font/text-align/break-word等4.其他属性(包括CSS3中独有的一些属性),如:content/border-radius/box-shadow等...

2020-11-11 20:52:47 152

原创 C++语言学习记录-20:函数的默认参数

在写函数的过程中,如果预先给好了几个参数,那么在使用函数的时候会更方便一点。比如:#include<iostream>using namespace std;int func(int a, int b =20, int c = 30){ return a+b+c;} int main(){ cout<<func(10)<<endl; return 0;}这样也可以输出60。而下面的函数调用如果写成func(10,30)就会得到结果70,说明函数

2020-11-11 16:37:44 86

原创 C++语言学习记录补充:引用的几种特殊用法

引用作函数的左值&常量引用

2020-11-09 23:33:20 107

原创 CSS笔记-7:浮动

浮动的简单介绍浮动可以改变元素标签的排列方式,最典型的应用就是让多个行内块元素在一行内排列显示。一般来说,如果是多个盒子纵向排列用标准流即可,横向排列才需要考虑使用浮动。浮动的语法:选择器{ float: 属性值;},其中的属性有三个:none(元素不浮动,默认值)left(元素向左浮动)right(元素向右浮动)浮动的规则是创建浮动框将其移动到一边,直到左边缘或右边缘触及一个包含块或另一个浮动框的边缘。浮动需要注意的问题浮动元素会脱离标准流(脱标)1.脱离标准流的控制移动到指定位置,即为脱标

2020-11-08 19:01:17 257

原创 CSS笔记-6:CSS3之后的新增样式

圆角边框border-radius: length;这就是圆角边框的实现原理,在矩形角部使用一个圆去贴合,并将圆外的部分颜色去掉,就能形成一个圆角边框,所以上面的length是圆形的半径,数值越大,弧度也越大。若要做一个圆形的盒子,可以使用一个正方形里面加上一个半径长度为边长一般的圆形,后面的length既可以直接填入边长一半的数值,也可以直接写作50%。当要给不同的角设置不同的圆角值时,可以使用以下语法:border-radius: 10px 20px 30px 40px这时是从边框的左上

2020-11-05 22:13:11 191 1

原创 C++语言学习记录-19:内存的分区模型

内存分区模型C++在执行时,将内存从大方向上划分为四个区域,在这些不同区域中存放的数据,会被赋予不同的生命周期,以便我们灵活编程。1.代码区:由操作系统管理,用于存放函数体的二进制代码2.全局区:用于存放全局变量和静态变量以及常量3.栈区:由编译器自动分配、释放,存放函数的参数值和局部变量等4.堆区:由程序员分配释放,或在程序结束后由操作系统回收未执行程序之前在程序编译之后且程序执行之前,会生成一个exe的可执行程序,未执行该程序前有两个区域。代码区代码区用于存放CPU执行的机器指令,它

2020-11-04 19:52:52 742

原创 C++补充:char类型

这是一个自己之前并不很了解的东西

2020-11-03 21:38:14 199 1

原创 CSS笔记-5:网页的盒子模型

盒子模型就是将网页中的所有元素的布局看作盒子,通过将盒子的移动与修改样式并向里面填充内容来达到网页布局的效果。css中的盒子模型css盒子模型用于封装周围的html元素,包括边框、内外边距、实际内容上面的是一个css盒子的标准模型。borderborder控制的是盒子的边框,比如说要控制一个div盒子的边框,就可以用border的相关属性。border的属性包括border-width(边框的粗细)、border-style(边框的样式)、border-color(边框颜色)。border-

2020-11-02 23:47:30 252

原创 CSS笔记-4:CSS的层叠性、继承性、优先级

CSS的三大特性CSS的层叠性、继承性和优先级被称为CSS的三大特性。层叠性当相同的选择器设置了一类相同的样式,但是之间会发生冲突时,一个样式会覆盖另一个样式。CSS代码是从上往下执行的,因此,它会遵循就近原则,即哪一个样式离它近就会显示出哪一个样式。当然,如果样式没有发生冲突,就不会进行层叠。<style>div{ color:red; color:blue; }</style>.....<div></div>/*最终div会显示出

2020-10-31 20:01:02 142

原创 CSS笔记-3:背景

一个好的背景,可以让网站的整体观感更棒

2020-10-29 21:49:23 201 2

原创 C++语言学习记录-18:结构体

结构体是一种保存不同类型变量的数据类型,在较多数据的处理场景中比较使用

2020-10-29 00:04:48 112

原创 CSS笔记-2:元素的显示模式

灵活运用不同的元素的显示模式会为后面的页面设计带来很多方便

2020-10-28 23:50:37 222

原创 CSS笔记-1:伪类选择器

伪类选择器是CSS复合选择器中的一种,用于向某些选择器添加一些特殊的效果,或是选择第n个元素。伪类选择器的书写是以:开头,这一点与之前的选择器.开头有所不同。链接伪类选择器a:link{} 选择所有未被访问过的链接,花括号中更改的属性就针对这一类链接a:visited{} 选择所有已被选择过的链接a:hover{} 选择鼠标指针位于其上的链接a:active{} 选择鼠标按下未弹起的链接,即鼠标点击瞬间链接的颜色注意事项:1.在书写过程当中如果四种样式都需要就要以LVHA顺序书写2

2020-10-25 11:14:40 416

原创 C++语言学习记录-17:指针与函数

利用指针实现函数的地址传递之前在函数部分中,如果使用简单的值传递(如程序cpp1),就会发生虽然函数内部的形参值发生改变,但是显示出来的实参值并没有发生变化。因此,需要使用指针进行地址传递,就可以实现实参的交换(如程序cpp2)//cpp1#include<iostream>using namespace std;void swap(int a, int b){ int temp; temp = a; a = b; b = temp;}//cpp2#include&l

2020-10-21 19:44:24 93

原创 C++语言学习记录-16:指针与数组间的联系

指针运算一般来讲,指针的算术运算是和数组的使用相联系的,只有在使用数组时,才会得到连续分布的可操作内存空间。下面介绍指针运算的基本原理。指针是一种数据类型,与其他数据类型一样,指针变量也可以参与部分运算,包括算术运算、关系运算和赋值运算。指针可以和整数进行加减运算,但是它所代表的含义比较特殊。比如说指针p,当加上一个整数n时,p+n指的是p当前所指的位置后方第n个地址。同理,p-n指前方第n个地址。p++指当前位置下一个数据的地址,p–指的是前一个数据的地址。*(p1+n1)表示p1当前所指的数后n

2020-10-21 17:36:46 237

原创 C++语言学习记录-15:数组

数组的概念数组是用来储存和处理大量同类型数据的数据结构。数组是具有一定顺序关系的若干对象的集合体,组成数组的对象被称为该数组的元素。数组可以由除void类型以外的任意类型构成,它可以将一群相同类型的数据批量储存处理。数组的声明及使用比如要声明一个称为“first”的int类型数组,其中可以放置10个元素,声明方式如下:int first[10];这是一个一维数组。称为second的double类型二维数组声明方式如下:double second[5][3];这里面的元素个数为15,可以看

2020-10-17 16:26:51 269 1

原创 C++中的数据类型汇总

整型常见的数字类型short:至少16位2byteint: 至少与short一样长,一般为4bytelong:至少8byte且至少与int等长long long:至少16byte为且至少和long一样长无符号类型每一种整型都有对应的一种无符号类型,其长度与对应的整型相同,但是由于没有负数部分,所以表示的最大数更大,如unsigned short类型可以表示0~65535的数。char类型char类型是专门用于存储字符而设计的。字母对应ASCII码,如A为65,a为97,空格为32,0为48

2020-10-17 14:58:58 1579

原创 C++语言学习记录-14:指针

指针的概念C++的学习过程中,最难的一个部分就是摸清指针的概念。指针是一个变量,但是它储存的是对应的值的地址,而不是值本身。一般可以见到的如int型、char型的变量,其对应的值都是一个数值,或某串有意义的字符。指针所对的数值代表的是一段地址,代表的是它所指向的数据在内存中的放置位置,“指向了”一个变量。因此,指针也是一种数据类型,具有指针类型的变量被称为指针变量。提取地址的运算符假设man是一个变量,利用&man就代表它的地址。下面是C++ primer plus中的一段代码,在这里对它

2020-10-14 23:12:50 157

原创 C++语言学习记录-13:构造函数和析构函数

构造函数是什么想象你刚买了一套房子,在装修之前,必然是什么都没有的毛坯房,运气不好的话里面还会有一些奇怪的东西。这个时候,就需要将房子装修,之后方可入住。程序也是一样的,在对内存初始化之前,你的函数里面的参数可能包含了很多垃圾数据,要对垃圾数据进行清理,才能让后面的函数运行顺利,这一个过程就叫做构造函数。和类名相同的无返回函数就是它的初始化函数(构造函数),编译器保证在创建一个对象之后、允许你使用它之前,它必定会在这个对象对应的内存上执行构造函数,按你的要求把对象装修好。如果你不写,那么它默认给你个毛

2020-10-09 19:59:08 135

空空如也

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

TA关注的人

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