自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STL常用算法(遍历、查找、排序、拷贝和替换、算术生成、集合)

概述:算法主要是由头文件<algorithm> <functional> <numeric>组成 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历、复制、修改等等 <functional> 体积很小,只包括几个在序列上面进行简单数学运算的函数模板 <numeric>定义了一些模板类,用以生命函数对象常用算法:常用遍历算法 for_each //遍历容器 transf...

2021-09-06 10:01:08 281

原创 STL-函数对象

概念:重载函数操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象使用特点 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 函数对象超出普通函数的概念,函数对象可以有自己的状态 函数对象可以作为参数传递 #include <iostream>#include <vector>#include <map>#include &lt

2021-09-03 15:19:41 259

原创 map/multimap

简介map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现优点:可以根据key值快速找到value值map/multimap区别:map不允许容器中有重复的key值元素 。。。。。。map构造和赋值map<T1,T2> map map(const map& map) map& operato

2021-09-02 16:28:17 180

原创 set/multiset容器

简介:所有元素在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现set和multiset区别:set不允许容器中有重复的元素 multiset允许有重复的元素set构造和赋值set<T> st set(const set& st) set& operator=(const set& st)set大小和交换size() empty() swap()set插入和删除insert(elem) clea

2021-09-02 16:02:53 103

原创 pair对组

成对出现的数据,可以利用对组返回两个数据两种创建方式:pair<type,type> p (value1,value2) pair<type,type> p = make_pair(value1,value2)void test(){ pair<string, int> p("Tom", 20); cout << p.first << "\t" << p.second << endl; pair<

2021-09-02 15:26:45 88

原创 list容器

链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的功能:将数据进行链式存储链表组成:由一系列结点组成结点组成:一个是存储数据单元的数据域,另一个是存储下一个节点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间,因此链表List中的迭代器只支持前移和后移,属于双向迭代器list的优点:采用动态内存分配,不会造成内存浪费和溢出 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量的元素..

2021-09-02 15:03:37 145

原创 queue容器

概念:queue是一种先进先出的数据结构,它有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为常用接口构造函数 queue<T> que; queue(const queue& que) 赋值操作 queue& operator=(const queue& que) 数据存取 push(elem) pop(); back(); front(); .

2021-08-31 15:19:05 120

原创 stack容器

概念:stack是一种先进后出的数据结构,它只有一个出口,先进后出栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为入栈:push();出栈:pop();stack常用接口构造函数 stack<T> stk; stack(const stack& stk); //拷贝构造 赋值操作 stack& operator=(const stack& stk); 数据存取 push(elem); //栈顶添加 po...

2021-08-31 10:22:43 91

原创 vector+deque小案例

案例描述:五名选手:ABCDE,10位评委对每一名选手打分,除去最高分,最低分,取平均分,显示选手最终得分情况#include <iostream>#include <vector>#include <deque>#include <string>#include <algorithm>#include <time.h>using namespace std;class Person{public: Per

2021-08-31 10:01:12 147

原创 deque容器

基本概念功能:双端数组,可以对头端进行插入删除操作 与vector区别 vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度会比vector快 vector访问元素时的速度会比deque快,这和两者的内部实现有关 deque内部工作原理 deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间 deque构造函数deque&...

2021-08-30 17:16:10 121

原创 C++:模板

模板就是建立通用的模具,大大提高复用性 特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 C++另一种编程思想为泛型编程,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板函数模板 作用:建立一个通用的函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表 语法:template<typename T> //函数声明或定义 template---声明创建模板 typename---其后面的符号是一...

2021-08-30 15:50:27 128

原创 vector容器

基本概念功能:vector数据结构和数组非常相似,也称为单端数组 与普通数组的区别:不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展:并不是在原空间之后续接新空间,而是找到更大的内存空间,然后将数据拷贝到新空间,释放原空间 vector容器的迭代器是支持随机访问的迭代器vector构造函数(创建vector容器)vector<T> v; //利用模板实现类实现,默认构造函数 vector(v.begin() , v.end()); //将v...

2021-08-30 15:49:57 107

原创 string容器

本质:string是C++风格的字符串,而string本质上是一个类 string和char*的区别 char*是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器 特点 string类内部封装了很多成员方法,例如:查找find,删除delete,替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责 string构造函数 string(); //创建...

2021-08-30 09:29:18 107

原创 STL初识

STL:标准模板库STL从广义上分为:容器、算法、迭代器容器和算法之间通过迭代器进行无缝连接STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器 容器:各种数据结构,如vector、list、set、map等用来存放数据 STL容器就是将运用广泛的一些数据结构实现出来 这些容器分为序列式容器和关联式容器两种 序列式容器:强调值的排序,序列式容器中每个元素均有固定的位置 关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系 ...

2021-08-04 14:43:30 94

原创 C++:文件操作

C++文件操作需要包含头文件 <fstream>文件类型分两种: 文本文件:文件以文本的ASCII码形式存储在计算机中 二进制文件:文件以二进制的形式存储在计算机中,用户一般不能直接读懂 操作文件三大类 ofstream: 写操作 ifstream: 读操作 fstream: 读写操作 文件打开方式文本文件操作 写文件 包含头文件 #include < fstream > 创建流对象 ofstream...

2021-07-09 10:06:41 152

原创 c++:类和对象(多态(多种形态))

分类: 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动态多态:派生类和虚函数实现运行时多态 区别: 静态多态的函数地址早绑定-编译阶段确定函数地址 动态多态的函数地址晚绑定,运行阶段确定函数地址( virtual 关键字) 条件: 有继承关系 子类重写父类的虚函数(重写:返回类型,函数名,形参都要完全相同) 使用: 父类的指针或者引用,执行子类对象 #include <iostream>using nam

2021-07-08 16:52:11 159

原创 C++:类和对象(继承)

一个类除了拥有另一个类的共性,还有自己的特性,可以使用继承,减少重复代码基本语法:class 子类 : 继承方式(public、protect、private) 父类 子类也称派生类,父类也称基类

2021-07-08 10:47:14 546

原创 C++:类和对象(运算符重载)

概念:对已有运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型

2021-07-07 15:53:59 234

原创 C++:类和对象(友元)

友元的关键字为 friend(声明一些特殊的函数或者类来作为另一个类的好朋友,访问这个类里面的私有成员)友元的三种实现全局函数做友元 #include <iostream>#include <string>using namespace std;class Building{ //goodGay是Building的好朋友,可以访问Building中的私有成员 friend void goodGay(Building& building)

2021-07-07 10:46:18 156

原创 C++:类和对象(对象特性)

对象的初始化和清理: 对象的初始化和清理是两个非常重要的安全问题: 一个对象或者变量没有初始状态,对其使用的后果是未知的 一个对象或者变量使用完,没有及时清理,也会造成一定的安全问题 C++利用了构造函数和析构函数解决上述问题,这两个函数会被编译器自动调用,完成对象初始化和清理工作,对象初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造函数和析构函数,编译器会提供,编译器提供的构造函数与析构函数是空实现。构造函数:为对象的成员属性赋值,系统自动调用 语法: 类

2021-07-07 09:23:44 209

原创 C++:类和对象(封装)

c++面向对象的三大特性为:封装、继承、多态c++认为万事万物皆为对象,对象上有其属性(成员变量)和行为(成员方法)例如:人可以作为对象,属性有姓名、年龄......., 行为有走、跑、吃饭..........封装 封装的意义 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 语法 语法:class 类名{ 访问权限:属性 / 行为}; 实例化(通过一个类创建一个对象) 通过 . 访问属性和行为 #include &lt.

2021-07-06 10:45:35 83

原创 C++:函数高级

1.函数默认参数//如果我们自己传入数据,就使用自己的数据,如果没有,那么用默认值//如果某个位置参数有默认值,那么从这个参数往后,必须要有默认值//如果函数声明有默认值,函数实现的时候就不能有默认参数#include <iostream>using namespace std;int func(int c, int a = 10, int b = 10);int func(int c, int a, int b){ return c + a + b;}

2021-07-05 17:25:14 105

原创 C++:引用

引用的作用:给变量起别名,操作同一块内存空间语法:数据类型 &别名 = 原名引用的注意事项:引用必须初始化 int a=10;int &b=a;//初始化 引用在初始化后,不可以改变 b 一旦成为 a 的别名,就不能成为 c 的别名 引用做函数参数作用:函数传参时,可以利用引用技术让形参修饰实参优点:可以简化指针修改实参...

2021-06-23 10:15:15 92

原创 C语言:文件操作

在程序设计中,一般谈的文件有两种:程序文件和数据文件程序文件:包括源程序文件(后缀为 .c),目标文件(Windows下后缀为 .obj),可执行cehn'gu

2021-06-22 17:22:51 188

原创 C++:变量

小数类型输出格式设置:#include <iomanip>cout << fixed (固定以小数输出)<< setprecision(2)(设置保留位数);

2021-06-22 17:22:22 77

原创 C++:内存模型

C++程序在执行时,将内存大方向划分为4个区域: 在程序编译,生成了 exe 可执行程序,未执行该程序前分为两个区域:代码区、全局区代码区:存放函数体的二进制代码,由操作系统进行管理 存放CPU执行的机器指令 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可 代码区是只读的,使其只读的原因是防止程序意外修改了它的指令 全局区:存放全局变量和静态变量以及常量 该区域数据在程序结束后由操作系统释放 程序运行后:栈区:由...

2021-06-22 17:22:01 79

原创 C语言:动态内存分配

前言:C语言中对字符串的处理是很频繁的,但C语言本身没有字符串类型,字符串通常放在常量字符串中或者字符数组中NULL————空指针NUL / Null———— '\0'求字符串长度 strlen size_t strlen (const char * str) size_t 是无符号整型 字符串以 \0 作为结束标志 长度不受限制的字符串函数介绍 strcpy (字符串拷贝) 源字符串必须以 \0 结束 会将源字符串中的 \0 拷贝到目标空间 目标

2021-06-18 17:46:33 498

原创 C语言:字符串函数使用和剖析

求字符串长度 strlen 长度不受限制的字符串函数介绍 s't'r'c'p'y

2021-06-18 15:40:56 111

原创 C语言:自定义数据类型——枚举和共用体

枚举——把可能的值一 一列举枚举类型的定义:enum Day{ Mon, Tues, Wed, Thur, Fri, Sat, Sun};enum Sex{ man, women};

2021-06-17 16:49:30 155

原创 C语言:自定义数据类型——位段

位段成员必须是 int 、unsigned int 或 signed int位段的成员名后边有一个冒号和一个数字

2021-06-17 15:52:55 370

原创 C语言:初识结构体

结构体:结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量

2021-06-17 15:31:57 106

原创 C语言:指针进阶

字符指针 数组指针 指针数组 数组传参和指针传参 函数指针

2021-06-13 10:43:16 105

原创 VS调试技巧

调试(Debug),又称除错,是发现和减少计算机程序和电子仪器设备中程序错误的一个过程调试的基本步骤:发现程序c

2021-06-07 16:50:33 196

原创 C语言:初级指针

指针是什么?指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值,由于通过地址能找到所需的变量单元,可以说,地址zhi

2021-06-07 10:32:24 93

原创 C语言操作符详解

操作符分类算术操作符 yi'wei

2021-06-07 09:22:33 198 1

原创 C语言数组实现简单扫雷

//头文件定义,函数声明#include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2//雷的个数#define MINE_NUM 20void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);.

2021-06-06 10:22:06 281

原创 C语言实现三子棋小游戏

game.h#define ROW 3#define COL 3#include <stdio.h>#include <stdlib.h>#include <time.h>/**函数声明*///初始化棋盘void InitBoard(char board[ROW][COL], int row, int col);//打印棋盘void DisplayBoard(char board[ROW][COL], int row, int col);.

2021-06-05 15:26:41 146 3

原创 C语言:数组

数组是一组相同类型元素的集合一维数组的创建和初始化:

2021-06-05 11:05:36 72

原创 C语言:猜数字小游戏

#include <stdio.h>#include <stdlib.h>#include <time.h>void menu(){ printf("****************************\n"); printf("***********猜数字***********\n"); printf("****1__开始 0__退出*****\n"); printf("****************************\n");.

2021-06-03 16:55:13 166 3

空空如也

空空如也

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

TA关注的人

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