![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
William 壹
这个作者很懒,什么都没留下…
展开
-
stack-queue
#include <iostream>#include <stack>#include <queue>using namespace std;// 栈: 先进后出, 中间的位置是不能操作。// 队列: 先进先出, 中间的位置是不能操作// 栈和队列 用来临时的存储数据,初始状态和终止状态是NULLint main(){ stack...原创 2019-10-29 20:07:45 · 69 阅读 · 0 评论 -
algorithm
#include <iostream>#include <vector>#include <algorithm>#include <time.h>using namespace std;// list 和 vector 如何选择// list 便于动态的添加删除// vector 便于读取数据void Show(int...原创 2019-10-29 20:04:49 · 95 阅读 · 0 评论 -
Set
Set的特性是,所有元素都会根据元素的键值自动被排序,Set 的元素不像Map那样可以同时拥有实值和键值,Set 元素的键值就是实值,实值就是键值。Set 不允许两个元素有相同的键值。#include<iostream>#include <set>using namespace std;// set 集合 可以去除重复int main(){ int arr...原创 2019-10-29 20:01:38 · 56 阅读 · 0 评论 -
map2
#include <iostream>#include <map>#include <list>#include <string>using namespace std;int main(){ map <string,list<int>> mp; mp["理工大学"].push_back(104);...原创 2019-10-29 19:56:20 · 456 阅读 · 0 评论 -
map
Map 的特性是,所有元素都会根据元素的键值自动被排序,map的所有元素都是pair,同时拥有实值(value)和键值(key)。Pair的第一元素被视为键值,第二元素被视为实值。Map 不允许两个元素拥有相同的键值。. pair<string,int> pairTemp(string(“A”),5); //pair的构造函数...原创 2019-10-29 19:52:38 · 72 阅读 · 0 评论 -
list-vector
#include <iostream>#include <list>#include <vector>using namespace std;int main(){ vector<list<int>> arr(7); for(int i = 0;i<7;i++) { for(int j = 0;j <...原创 2019-10-29 19:48:10 · 62 阅读 · 0 评论 -
List
STL list 是一个双向链表,迭代器具备前移和后移的能力。list 有一个重要的性质:插入操作和结合操作会造成原有的迭代器失效。应用时应该用<list>以下为list 的特有操作(1)Void push_front(const T &x); //插入一个结点,作为头结点(2)Void push_back(const T &x)...原创 2019-10-29 19:42:02 · 60 阅读 · 0 评论 -
vector
vector 的数据安排以及操作方式,与array 非常相似。两者的唯一差别在于空间的利用的灵活性。Array 的扩充空间要程序员自己来写。Iterator //vector 的迭代器(是普通指针)Vector的重要成员函数Public: Iterator begin();...原创 2019-10-29 19:23:36 · 77 阅读 · 0 评论 -
operator
operator= 和 拷贝构造 区别? 相同点: 默认的是浅拷贝 不同点: 拷贝构造 是对象创建初始化的时候执行, operator=是对象创建完,重新=号赋值#include<iostream>#include <list>using namespace std; /*operator= 和 拷贝构造 区...原创 2019-10-29 19:06:49 · 92 阅读 · 0 评论 -
拷贝构造
https://blog.csdn.net/lwbeyond/article/details/6202256#commentBox1. 什么是拷贝构造? 构造函数,参数是当前这个类const这个类型的引用2. 拷贝构造什么时候执行? 用同类型的对象去初始化。3. 拷贝构造存在什么问题? 类中默认的拷贝构造是一个浅拷贝,浅拷贝会使两个对象使用同一个空间...原创 2019-10-29 19:01:20 · 144 阅读 · 0 评论 -
模板单例
接口:把能实现这个功能的方法全部屏蔽掉,然后在单独给一个函数实现这个功能在定义类时,我们要先将能定义类这个功能屏蔽掉,因此要把构造函数设置成虚构函数然后在单独设置一个函数来实现定义类这个功能。#include <iostream>using namespace std;class CPerson{private: CPerson() { } ~...原创 2019-10-25 21:09:44 · 77 阅读 · 0 评论 -
模板方法
1.名词解释模板方法:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,模板方法可以使子类可以不修改一个算法框架的前提下即可重构该方法的某些特定步骤。模板方法通过把不变行为搬到父类,去除子类中的重复代码。把不同的地方写成虚构函数,强制派生类重写#include <iostream>using namespace std;class CPerson...原创 2019-10-25 20:51:35 · 110 阅读 · 0 评论 -
抽象类 接口类
#include <iostream>using namespace std;class CPerson // 抽象类{public: virtual void Eat()=0; // 纯虚函数,没有函数的定义,强制派生类实现函数};class CChina : public CPerson // 具体类{public: virtual voi...原创 2019-10-01 21:13:06 · 86 阅读 · 0 评论 -
虚析构
作用: 当使用基类的指针删除一个派生类的对象时,可以调用派生类的析构函数。由于有虚函数表的存在,这里就发生了多态,使得派生类的析构函数能够被调用。反之,如果基类的析构函数不是虚函数,则使用基类的指针删除派生类的对象时,不会调用派生类的析构函数。#include<iostream>using namespace std;class AA{public: AA() { ...原创 2019-10-01 20:49:05 · 144 阅读 · 0 评论 -
头文件
头文件:放函数声明。class CPerson{public: CPerson(); ~CPerson();};源文件:函数的实现。#include "Person"#include <iostream>using namespace std;CPerson::CPerson(){ cout << "CPerson" << ...原创 2019-10-02 11:26:08 · 162 阅读 · 0 评论 -
成员函数指针
#include <iostream>using namespace std;class CPerson{public: void Show() { cout << "Show" << endl; }};int main(){ // 成员函数指针定义 ::* void (CPerson::*pfn)(); // 给成员...原创 2019-09-26 17:28:03 · 100 阅读 · 0 评论 -
光标 图标
光标 图标在添加资源中添加。1.图标大小 323224;wndclass.hIcon = 这个是修改任务栏中的图标,当显示页面图标为0时,此页面显示图标和任务栏显示图标一致。wndclass.hIconSm = 这个是修改显示页面中的图标2.光标 323213.一开始,使页面左上角出现一张图片。显示图片 必需要有两个DC,从一个DC中向另一个DC拷贝。HDC hd...原创 2019-10-11 19:13:55 · 152 阅读 · 0 评论 -
函数指针
//#include <iostream>//using namespace std;//////void Show()//{// cout << "Show" << endl;//}////// 调用函数的方法 //// 函数名();//// (*pfn)(); // 通过函数指针调用//////int main()...原创 2019-09-26 17:27:06 · 72 阅读 · 0 评论 -
宏
\ 和下一行连接,\后面不能有任何字符#define AAAA() for(int i=0;i<10;i++)\ {\ cout << i << endl;\ }宏的参数也是替换#define BBBB(Thisclass)\ Thisclass xx;\ ps.Show();##是连接成整体#define BBBB(Thisc...原创 2019-10-02 13:55:53 · 66 阅读 · 0 评论 -
operator
#include <iostream>using namespace std;class CPerson{public: int m_nNum;public: CPerson() { m_nNum = 100; }public: int operator=(int num) // 在类内重载,对象放在左边,符号右边的是参数 { ...原创 2019-10-02 14:13:58 · 96 阅读 · 0 评论 -
a++ ++a
#include <iostream>using namespace std;class CPerson{public: int m_nNum;public: CPerson() { m_nNum = 100; }public: int operator++(int a) // a++ { a = m_nNum; m_nNum = m_nN...原创 2019-10-02 14:16:37 · 156 阅读 · 0 评论 -
迭代器
迭代器 可以看成是一个指针,重载了指针操作的符号#include <iostream>using namespace std;struct Node{ int nValue; Node* pNext;};class Iterator // 迭代器{public: Node* pTemp;public: Node* operator++(int a)...原创 2019-10-02 14:44:20 · 69 阅读 · 0 评论 -
链表 c++
c++可以不用自己定义链表,可以引用头文件创建一个装int的链表 list lst;创建链表,并输出list<int> lst; lst.push_back(124); lst.push_back(125); lst.push_back(126); list<int>::iterator a = lst.begin(); while (a != lst....原创 2019-10-02 15:17:59 · 114 阅读 · 0 评论 -
游戏壳
.h#pragma once#ifndef _GAMEAPP_H_#define _GAMEAPP_H_#include <windows.h>#define DECLARE(ThisClass) \ CGameApp* CreateObject()\ {\ return new ThisClass;\ }class CGameApp{protecte...原创 2019-10-11 18:16:38 · 186 阅读 · 0 评论 -
Beginpaint 与 GetDC 的区别
InvalidateRect是一个函数,该函数向指定的窗体更新区域添加一个矩形,然后窗体跟新区域的这一部分将被重新绘制。BeginPaint、EndPaint是比较“被动”的,只在窗口新建时和被摧残时才重画。而GetDC用于主动绘制,只要你指到哪,它就打到哪。它不加判断就都画上去,无效区域跟它没关系。#include <windows.h>#include "resource....原创 2019-10-11 19:20:06 · 508 阅读 · 0 评论 -
引用
#include <iostream> // 输入输出流的头文件using namespace std;// 1. 什么是引用? 给变量起的别名// 2. 什么时候使用? 在程序的不同地方,操作同一个空间// 3. 引用和指针的区别?// 引用定义了就要初始化// 引用初始化都就不能再重新引用其他空间// 有NULL的指...原创 2019-09-14 20:59:15 · 102 阅读 · 0 评论 -
动态多态
#include <iostream>using namespace std;class CWater{public: virtual void Show() // 虚函数完成了 通过父类的指针 调用子类的函数 { cout << "CWater::Show" << endl; }};class CBeer : public ...原创 2019-09-26 17:24:06 · 220 阅读 · 0 评论 -
静态多态
#include <iostream>using namespace std;// 静态多态 可以用函数重载实现,或,模板class CBeer{public: void Show() { cout << "CBeer::Show" << endl; }};class CMilk{public: void Show() { ...原创 2019-09-26 17:23:34 · 147 阅读 · 0 评论 -
虚函数的实现原理
#include <iostream>using namespace std;class CWater{public: virtual void AA() { cout << "CWater::AA" << endl; } virtual void BB() { cout << "CWater::BB" << ...原创 2019-09-26 17:19:46 · 143 阅读 · 0 评论 -
接口
接口 是规定别人必须要按照要求做实现方法: 1. 不允许做这件事 2. 提供一个唯一的接口#include <iostream>#include <string>using namespace std;class CPerson{public: int m_nAge;private: bool m_bSex;protected: str...原创 2019-09-16 19:39:59 · 89 阅读 · 0 评论 -
类定义链表
#include <iostream>#include <string>using namespace std;class CList{protected: struct Node { int id; Node *pNext; }; Node *pHead; Node *pEnd; int m_nsize;public: CList()...原创 2019-09-16 19:33:13 · 542 阅读 · 0 评论 -
类
访问修饰符:public,protected,private**public(公共):**在任何一个地方都可以见到。**protected(受保护):**本类和派生类中可以见到。**Private(私有):**只有本类中可以见到。struct Node { int id; string name; string telnumber; }结构体 和 类 的区...原创 2019-09-16 18:54:43 · 81 阅读 · 0 评论 -
函数参数的传递方式
函数的参数传递方式: 值, 地址, 引用看是否要改变传入的内容?不改,使用一下值 值传递需要修改 地址, 引用 (new的空间选择指针,局部的栈区变量就来引用)在C++建议不使用 值传递#include <iostream> // 输入输出流的头文件using namespace std;void Swap(int x,int...原创 2019-09-14 21:23:15 · 115 阅读 · 0 评论 -
指针变量的引用
定义:若一个变量声明为T&,既引用时必须是T类型的变量或对象,或者能转换成T类型的对象进行初始话。所以,一般地,引用的对象都是变量。/*指针变量的引用*/ int *a; //声明指针变量,a是一个指向int地址 int* &p=a; //正确,指针变量也是变量,p作为a的别名,改变p指向的值等同于对a进行相同处理 int b=8; p=&...原创 2019-09-14 21:18:18 · 1657 阅读 · 0 评论 -
函数重载 函数的默认参数
**函数重载:**在同一个作用域,名字一样,参数列表不同#include <iostream> // 输入输出流的头文件using namespace std;void Area(int r) // 函数的重载 在同一个作用域,名字一样,参数列表不同(参数的类型不同或者参数的个数不同){ cout << 3.1415*r*r &l...原创 2019-09-14 20:49:14 · 553 阅读 · 0 评论 -
string
#include <iostream> // 输入输出流的头文件#include <string>using namespace std;int main(){ char* psz = "asdasdasd"; //字符串类型 char sz[10] = "asdasdasd"; //字符数组 //-------------------...原创 2019-09-14 20:38:02 · 76 阅读 · 0 评论 -
for bool
c++ 11:for(int nVal : arr){cout << nVal << " ";}nVal ——> arr[i]在win32中: 我们判断布尔值我们用的是BOOL flag = TRUE(FALSE) 大写**在c++中:**我们判断布尔值是利用bool ,false#include <iostream> // ...原创 2019-09-14 20:26:42 · 129 阅读 · 0 评论 -
new delete
一、new用法1.开辟单变量地址空间使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零值。new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有标识符名。一般使用格式:格式1:指针变量名=new 类型标识符;格式2:...原创 2019-09-14 20:17:57 · 289 阅读 · 0 评论 -
命名空间
**命名空间的定义:**由关键字 namespace后边接着命名空间名字,之后接一对花括弧括住的一块声明和定义;#include <iostream> // 输入输出流的头文件using namespace std; // 打开 C++ 标准库的命名空间 定义命名空间, 区分同名的namespace Bird{ int nAge = 100;}na...原创 2019-09-14 19:56:27 · 123 阅读 · 0 评论 -
作用域运算符
::是运算符中等级最高的,它分为三种:全局作用域符,类作用域符,命名空间作用域符全局作用全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分如#include <iostream> // 输入输出流的头文件using namespace std; // 打开 C++ 标准库的命名空间int nAge = 100;int main...原创 2019-09-14 19:30:01 · 1861 阅读 · 0 评论