![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大爱C++
奋斗的小程序员
嵌入式爬坑中......
展开
-
c语言版本双人贪吃蛇
#include #include #include #include using namespace std;#define WIDTH 64 // 游戏区域网格宽度#define HEIGHT48 // 游戏区域网格高度#define ITEMSIZE10 // 游戏元素大小#define CMD_A_UP0x1 // 控制命令:游戏者转载 2016-08-09 07:14:59 · 3745 阅读 · 2 评论 -
C++之set和multiset容器初学
Set和multiset容器set/multiset的简介set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。 multiset与se原创 2017-02-17 18:05:19 · 2215 阅读 · 0 评论 -
STL(标准模板库)理论基础与容器
10.1 STL(标准模板库)理论基础10.1.1基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝原创 2017-01-18 23:26:20 · 1699 阅读 · 0 评论 -
c/c++9个冷门问题
gets() 方法 以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。 #include int main(void){ char buff[10]; memset(原创 2017-02-09 18:41:17 · 891 阅读 · 0 评论 -
C++之Deque容器初学(一)
Deque简介² deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。² deque在接口上和vector非常相似,在许多操作的地方可以直接替换。² deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。² deque头部和尾部添加或移除元素都非常快速原创 2017-02-10 21:38:12 · 1588 阅读 · 0 评论 -
STL中string的构造,遍历,抛异常
上面代码执行结果如下图:构造方法有几种:(1)默认构造函数 (2)拷贝构造函数 (4)带参数的构造函数抛异常的时候,用at()方法,用数组方式抛异常的话会发生中断,数组越界,发生错误。原创 2017-01-20 22:23:34 · 1581 阅读 · 0 评论 -
C++之Deque容器初学(二)
deque对象的带参数构造理论知识² deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间。² deque(n,elem); //构造函数将n个elem拷贝给本身。² deque(const deque &deq); //拷贝构造函数。 deque deqIntA;deqIntA.push_b原创 2017-02-13 23:44:21 · 888 阅读 · 0 评论 -
C++之Stack容器初学
Stack简介² stack是堆栈容器,是一种“先进后出”的容器。² stack是简单地装饰deque容器而成为另外的一种容器。² #include stack对象的默认构造stack采用模板类实现, stack对象的默认构造形式: stack stkT; stack stkInt; //一个存放int的stack容器。stack st原创 2017-02-13 23:53:17 · 7600 阅读 · 0 评论 -
C++之Queue容器初学
Queue简介² queue是队列容器,是一种“先进先出”的容器。² queue是简单地装饰deque容器而成为另外的一种容器。² #include queue对象的默认构造queue采用模板类实现,queue对象的默认构造形式:queue queT; 如:queue queInt; //一个存放int的queue容器。queue queFl原创 2017-02-13 23:54:28 · 4735 阅读 · 0 评论 -
C++容器之List容器初学
List简介² list是一个双向链表容器,可高效地进行插入删除元素。² list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok)it+5(err)² #include list对象的默认构造list采用采用模板类实现,对象的默认构造形式:list lstT; 如:list lstInt; //定义一个存原创 2017-02-13 23:55:56 · 6609 阅读 · 1 评论 -
C++之vector容器初学
1 Vector容器简介² vector是将元素置于一个动态数组中加以管理的容器。² vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时2 vector对象的默认构造 vector采用模板类实现,vector对象的默认构造形式vector vec原创 2017-02-03 20:27:18 · 2703 阅读 · 1 评论 -
大爱C++——set容器
set容器简介:² set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。² set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。² set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。² multiset与set的区别:set支持唯一键值原创 2017-02-27 11:38:14 · 1716 阅读 · 0 评论 -
大爱C++——set容器使用仿函数
前面博客介绍过set容器了,这里还是简介一下set容器:一:set容器简介1.set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。2.set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。3.set不可以直接存取元素。(不可以使用at.(pos)与[]操作符原创 2017-03-12 11:23:18 · 3376 阅读 · 0 评论 -
大爱C++——new与malloc的区别
一、基本概念 malloc/free:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系原创 2017-03-21 19:32:40 · 550 阅读 · 0 评论 -
大爱C++——map容器(一)
一:map/multimap的简介1.map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。2.map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。3.map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。4.map可以直接存取原创 2017-03-12 14:28:41 · 897 阅读 · 0 评论 -
大爱C++——简单工厂模式
简单工厂模式 所属类别 :其他简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。原创 2017-04-08 13:57:24 · 539 阅读 · 0 评论 -
大爱C++——单例模式
一:简介单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。二:优缺点优点一、实例原创 2017-03-14 19:31:10 · 562 阅读 · 0 评论 -
大爱C++——算法
算法概述算法部分主要由头文件,和组成。是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。中则定义了一些模板类,用以声明函数对象。STL提供了大量实现算法的模版函数,只要我们熟悉了STL之后,许多代码可以被大大的化简,只原创 2017-03-25 13:30:46 · 875 阅读 · 0 评论 -
C++之优先级队列priority_queue
优先级队列priority_queue1 最大值优先级队列、最小值优先级队列2 优先级队列适配器 STL priority_queue3 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习语法代码:priority_queue> pq;priority_queue> pq;pq.empty()pq.size()pq.top()pq.pop()原创 2017-02-17 17:15:46 · 1904 阅读 · 0 评论 -
C++--异常处理遇上运算符重载
今天我们来说下异常处理。异常处理的基本语法:try{复合语句}catch(异常类型声明)复合语句catch(类型(形参))复合语句有这样一个案例:设计一个数组类Myarray,重载[]操作数据初始化时,对数据的个数进行有效的检查1)index2)index=0 抛出异常eZero3)index>1000 抛出异常eTooBig4)原创 2017-01-01 17:34:16 · 2600 阅读 · 0 评论 -
C++之vector容器初学(二)——插入和删除
插入操作:理论知识² vector.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。² vector.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。² vector.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值 简单案例原创 2017-02-06 11:30:26 · 50243 阅读 · 0 评论 -
C++中深浅拷贝问题以及重载=运算符
在C++中用一个对象去初始另一个对象时会调用拷贝构造函数。在拷贝时候,会分为深浅拷贝,今天我就这两个问题来写一点我自己的理解。创建一个类,并用类的对象去初始化另一个类。 代码如下:#include using namespace std;class A{private: int a; int b;public: A(int a1 = 0, int b1 =原创 2016-10-10 23:26:37 · 2928 阅读 · 0 评论 -
c++重载运算符之 ++ ——
//本程序实现-- ++重载#include using namespace std;class Complex{private: int a; int b; friend Complex& operator++(Complex& c1);//用全局方法实现前置++ friend Complex operator++(Complex& c1,int);//用全局方法实现后置+原创 2016-10-11 08:58:30 · 2045 阅读 · 2 评论 -
Linux 和c++常见头文件
在Linux下函数有很多头文件,下面列举了一些,希望大家喜欢^-^,给你顶,谢谢。 1、 Linux中一些头文件的作用: :ANSI C。提供断言,assert(表达式) :GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含 :GCC。文件夹操作函数。struct dirent,struct D原创 2016-09-29 19:12:51 · 1942 阅读 · 0 评论 -
C++中父子类中指针的步长问题
#include using namespace std;class Parent{public: Parent(int a=0) { this->a = a; } virtual void print() { cout << "我是爹" << endl; }private: int a;};class Child:public Parent{publ原创 2016-10-30 23:43:37 · 1249 阅读 · 0 评论 -
C++中的虚析构
概念我就不说了直接上代码,有详细的注释#define _CRT_SECURE_NO_WARNINGS //不加这个编译器报strcpy的错 不知道为什么,#include using namespace std;class A{public: A() { p = new char[20]; printf("A()\n"); } virtual ~A()//虚析构原创 2016-10-30 23:46:54 · 758 阅读 · 0 评论 -
C++中vptr指针的存在
在实现多态的时候三个步骤:(1)必须有继承(2)必须有virtual关键字(3)有父类指针指向子类对象其实在实现多态的时候,申明为虚函数是,编译器会自动生成一个虚函数表当存在虚函数时,每个对象都有一个指向虚函数表的指针下面我来测试一下它的存在:#include using namespace std;class A{public: A(int a) { t原创 2016-10-30 23:54:49 · 4094 阅读 · 0 评论 -
C++中ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示原创 2016-11-18 14:39:30 · 4297 阅读 · 1 评论 -
Strcpy函数的实现
Strcpy函数的实现在笔试题中大多数都会存在这样的一道题目:已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。这道题目看似不难,但想要达到满分还是不容易的。下面我们来看一个版本的答原创 2016-11-15 14:54:01 · 889 阅读 · 0 评论 -
C++--学生成绩管理系统
# include # include # include #include //用getch();using namespace std;#define _CRT_SECURE_NO_WARNINGS//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ class Student{public: char name[20]; char Id[20]原创 2016-11-20 18:15:14 · 9982 阅读 · 8 评论 -
c++函数模板做参数
模板分为函数模板和类模板今天我们来说说函数模板。一:函数模版定义形式template 类型形式参数表为:typename T1,typenameT2,......typenameTn或者classT1,classT2,......classTn函数模板声明形式template 类型 函数名(形式参数表){语句序列}函数模板原创 2016-12-04 16:14:20 · 4096 阅读 · 1 评论 -
VS2015常用快捷键
1.回到上一个光标位置/前进到下一个光标位置1)回到上一个光标位置:使用组合键“Ctrl + -”;2)前进到下一个光标位置:“Ctrl + Shift + - ”。2.复制/剪切/删除整行代码1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完成复制操作,而无需选择整行。2)如果你想剪切一整行代码,只需将光标移至该行,再使用组合原创 2016-12-07 16:40:04 · 593 阅读 · 0 评论 -
C++--单个类模板语法
今天学习到了c++的类模板。从最简单的单模板开始首先说一下为什么要类模板:1 类模板用于实现需数据的类型参数2 类模板在表示如数组,表,图等数据结构显得特别重要单个类模板代码#include using namespace std;templateclass A{public: A(T t) { this->t = t; } T &get() {原创 2016-12-08 16:33:58 · 1031 阅读 · 2 评论 -
C++--继承中的类模板语法
当模板遇上继承之后会发生什么呢?写一个简单的测试案例来说明当模板与上继承发生的“”大事件“”#include using namespace std;templateclass A{public: A(T a) { this->a = a; } T &get() { return a; }protected:public: T a;};//从模原创 2016-12-08 17:39:44 · 6242 阅读 · 0 评论 -
简介面向过程和面向对象
面向过程的结构化程序设计方法 设计思路– 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。l程序结构:– 按功能划分为若干个基本模块,形成一个树状结构。– 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。– 其模块化实现的具体方法是使用子程序。优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制原创 2016-12-09 13:14:25 · 981 阅读 · 0 评论 -
C++--模板遇上运算符重载
#include using namespace std;template class Complex{ friend Complex MySub(Complex& c1,Complex& c2) { Complex temp(c1.a-c2.a,c1.b-c2.b); return temp; } friend ostream& operator<<(ostream &原创 2016-12-26 16:58:06 · 5254 阅读 · 1 评论 -
C++--类模板中的static关键字
在类模板中定义一个static 类型的变量会发生什么呢?首先先看代码#include using namespace std;template class A{public: static T a;};templateT A::a = 0;int main(){ A a1, a2, a3; a1.a=10; a2.a++; a3.a++; cout ::a原创 2016-12-28 17:30:46 · 1060 阅读 · 1 评论 -
大爱C++——STL综合案例
STL综合案例案例:学校演讲比赛1)某市举行一场演讲比赛,共有24个人参加,按参加顺序设置参赛号。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。2)比赛方式:分组比赛第一轮分为4个小组,根据参赛号顺序依次划分,比如100-105为一组,106-111为第二组,依次类推,每组6个人,每人分别按参赛号顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。 第原创 2017-03-26 11:00:49 · 892 阅读 · 0 评论