
C++
秃头侠客
即使催更,也依然停更
展开
-
用C++实现银行家算法(代码)
#include <iostream>#include<vector>#include<algorithm>using namespace std;void Max(vector<vector<int>>& max, const int m, const int n) { cout << "请输入各进程最多...原创 2020-04-24 11:42:33 · 3951 阅读 · 1 评论 -
C++中必考的SLT算法(代码量爆减的秘密)
算法头文件小刘:亲情提示没有对应的头文件,算法是不能使用的哦#include< algorithm > 是STL头文件最大的一个:涉及到 比较 查找 排序 遍历 复制 修改#include< functional> 定义了一些模板类,以供使用#include< numeric> 体积很小,只包括几个所学运算的模板函数算法宇哥:重点来了,注...原创 2020-04-22 16:27:26 · 1182 阅读 · 0 评论 -
C++不得不了解的知识 函数对象(仿函数)
函数对象基本使用小刘:乔哥没在啊,还想问问他什么是仿函数呢?宇哥:他呀,就他讲的那些东西,谁能听懂,讲的好烂。。小刘:也是,要不咋俩讨论讨论?宇哥:也行,咋俩这水平比那秃子可高多了。小刘:函数对象是个对象(类),怎么又有函数,蒙了?宇哥:不冲突,因为它又叫仿函数,即类实现了函数的功能小刘:哦,原来是这样。那内部咋实现的呢?宇哥:其实就是类里面重载了括号。小刘:这个...原创 2020-04-22 14:03:15 · 214 阅读 · 0 评论 -
STL之list(链表),set(集合),map(图)容器
因为这些容器进本都是想通的,之前博主也已经讲了很对了,所以在这里就只展示一下个个容器的接口,和不同之处。list链表非连续的储存结构,相比于数组,链表插入和删除快,不会造成空间的浪费,但查询慢。list接口这些接口不一定都要记住,用的时候体会一下就好了1.赋值: = 或 assign(n,ele)//将n个ele付给本身2.交换:swap(stl) 两个容器元素互换3...原创 2020-04-17 22:02:07 · 448 阅读 · 0 评论 -
C++ Stack与 queuq 容器
stack 栈:先进后出queue 队列:先进先出之前讲的容器已经很多了,用法基本一致,所以只在这里展示一下接口往期容器Stack栈不能遍历,只有移除了栈顶元素,才可以输出下一个元素接口push() 往栈顶插入元素 入栈pop() 移除栈顶元素top() 返回栈顶元素empty() 判断栈是否为空size() 输出栈中元素个数queue因为只能接触队首和队尾...原创 2020-04-14 23:15:00 · 240 阅读 · 0 评论 -
c++ perror() 函数
perror("str")str – 是字符串,包含了一个自定义消息,将显示在原本的错误消息之前#include <stdio.h>int main (){ FILE *fp; /* 首先重命名文件 */ rename("file.txt", "newfile.txt"); /* 现在让我们尝试打开相同的文件 */ fp = fopen("...原创 2020-04-11 22:42:36 · 1029 阅读 · 0 评论 -
vector和deque容器的运用
vector和deque共同写的代码,实现10个购评委对4位选手的打分,并求出每位选手平均分#include<iostream>#include<string>#include<vector>#include<deque>#include<time.h>#include<algorithm>using names...原创 2020-04-11 21:58:12 · 323 阅读 · 0 评论 -
C++ 容器deque
deque双端队列(正常的为queue之后会讲到)deque与上一篇的vector操作基本一致,所以在这里简要的讲一下不同之处上一篇vector容器点击查看1.deque容器优劣势 deque容器进行队首的插入和删除要比vector快不少 deque与vector相比查找所读要慢一些这是由于deque特殊的内部结构因为需要中控器的中转所以会慢一些接口1.因为deque没有...原创 2020-04-11 21:56:38 · 453 阅读 · 0 评论 -
c++ STL vector容器(二)
1.vector的赋值 (= ,assign)1.1 vector之间的赋值 (=)#include<iostream>#include<string>#include<vector>using namespace std;void print(vector<int>&p) { for (vector<int>:...原创 2020-04-07 22:53:04 · 363 阅读 · 0 评论 -
c++ string容器
看代码吧!#include<iostream>using namespace std;int main() { //string是一个类//string容器赋值操作 = cout << "string容器赋值操作" << endl ; string str1; str1 = "hellow 优快云"; cout << st...原创 2020-03-29 23:14:39 · 148 阅读 · 0 评论 -
STL _vector(一)
写好的一个类似数组的模板需用到头文件 #include<vector>如果用其中提供的算法,需加上头文件#include<algorithm>下面是一个例子#include<iostream>#include<vector>#include<algorithm>using namespace std;void print...原创 2020-03-26 22:49:58 · 185 阅读 · 0 评论 -
STL基本概念
Standard Template Library的简称,中文名标准模板库顾名思义就是官方给出模板我们去使用就行了。STL分为六大板块容器 算法 迭代器 仿函数 适配器 空间配置器容器序列式容器:强调值的排序,每个元素都相应的位置关联式容器:二叉树结构,各元素没有严格的物理上的顺序关系算法(algorithms)质变算法:拷贝 替换 删除非质变算法:遍历 查找 计数...原创 2020-03-26 21:54:00 · 220 阅读 · 0 评论 -
C++ ref()函数
使用std::ref可以在模板传参的时候传入引用,thread的方法传递引用的时候,否则无法传递。例 在 thread 中使用引用,未使用ref()#include <iostream>#include <thread>using namespace std;void f(int &i) { for (int j = 0; j < i; j++)...原创 2020-03-26 18:25:43 · 6646 阅读 · 0 评论 -
c++ 多线程 初步了解
总体方法五与JAVA基本一致。用到头文件 #include<thread> thread创建一个线程 #include <iostream>#include <thread>using namespace std;void f(int i) { for (int j = 0; j < i; j++) { cout << ...原创 2020-03-26 18:12:52 · 210 阅读 · 0 评论 -
C++之不得不了解的---类模板
类模板基本语法与函数模板基本一致template<class T1,class T2>class Person {public: T1 name; T2 age;};类模板与函数模板的区别 1.类模板没有自动类型推导 报错正确 2.类模板在模板参数列表中可以有默认参数#include<iostream>#include<cstda...原创 2020-03-23 22:10:04 · 152 阅读 · 0 评论 -
C++不确定参数函数
头文件#include<cstdrad> 定义指针变量 va_list ( 用于储存变量)va_list list; 初始化va_list(a为参数个数)va_start(list, a); 操作 (取出参数,int为参数类型)va_arg(list,int) 结束可变参数的获取va_end(list)#include<iostre...原创 2020-03-23 16:51:17 · 565 阅读 · 0 评论 -
模板的局限性
模板并不是万能的的。有其局限性。 举个例子,将a付给b,如果a,b是数组,那么模板都会报错。 直接用模板比较两个类的大小也是行不通的。就拿比较大小来举例子吧正常情况下template<class T>bool compare(T& a, T& b) { if (a > b) { reture true} else { reture false...原创 2020-03-23 16:21:54 · 286 阅读 · 0 评论 -
普通函数与函数模板的调用规则
前言: 如果使用使用函数模板就不建议使用普通函数,否则容易产生二义性 如果普通函数和函数模板都可以使用,构造器会优先调用普通函数 可以通过空模板参数列表来强制调用函数模板 函数模板也可以发生重载 如果函数模板可以产生更好的匹配,优先调用函数模板。#include<iostream>#include<string>using namespace std;...原创 2020-03-18 14:23:51 · 156 阅读 · 0 评论 -
不得不了解的C++模板(一)
C++提供两种模板机制函数模板 类模板本节只讲函数模板首先声明下面是一个模板template<class T>函数模板T f_swap(T a,T b){}#include<iostream>using namespace std;template<class T>void f_swap(T &a, T &b) { T ...原创 2020-03-15 21:31:58 · 171 阅读 · 0 评论 -
C++文件操作_字符文件 及 控制符
操作文件的三大类 ifstream 读操作 ofstream 写操作 fstream 读写操作基本步骤与我在JAVA中讲的步骤基本一致包含头文件#include<fstream>选择流ofsteam ofs;打开文件ofs.opean("文件路径",""打开方式)操作ofs<<"写入数据"关闭流ofs.close()#inc...原创 2020-03-13 22:46:48 · 462 阅读 · 0 评论 -
c++子类与父类构造函数的关系
1.子类不继承父类构造函数。2.父类与子类都只有有默认构造函数(或无参构造),则先调用父类构造,在调用子类构造#include<iostream>using namespace std;class a {public : a() { cout << "a类" << endl; }};class b :public a {public: ...原创 2020-03-13 21:50:49 · 1290 阅读 · 0 评论 -
C++ 多态(三) 虚析构和纯虚析构
为神魔要用虚析构(纯虚析构)?父类指针在析构时不会调用子类析构函数,这会使得子类中堆区内存无法释放,从而导致内存泄漏。虚析构语法:virtual ~类名(参数列表){ 具体实现}纯虚构语法:virtual ~类名(参数列表)=0;类名::~类名(参数列表){具体实现}虚构函数与纯虚构函数的共性 都可以解决父类指针释放子类对象 都必须有具体函数实现虚构函...原创 2020-03-11 22:41:02 · 289 阅读 · 0 评论 -
C++多态(二)纯虚函数和抽象类
前一篇文章初步了解多态,点击即可查看纯虚函数语法: virtual 返回类型 函数名(参数列表)=0; 当类中有了纯虚函数,该类也称之为抽象类抽象类特征:抽象类不能被实例化。抽象类的子类必须重写纯虚函数,否则也为抽象类。#include<iostream>using namespace std;class animal {public: virtual...原创 2020-03-11 21:32:29 · 265 阅读 · 0 评论 -
C++多态(一)
多态分为两类 静态多态: 函数重载 运算符重载,复用函数名。 动态多态: 派生类和虚函数运行时多态。区别静态多态的函数地址早绑定: 编译阶段确定函数地址动态多态的函数地址晚绑定: 运行阶段确定函数地址动态多态满足关系 存在继承关系 子类重写父类虚函数动态多态 父类指针或引用 执行子类对象...原创 2020-03-10 22:26:56 · 172 阅读 · 0 评论 -
C++继承
继承 class 子类: 作用域 父类 父类的所有变量都会被子类继承(包括私有类),只是私有类被编译器隐藏,不显示class animal {public: int num;protected: int fit;private: int var;};class dog :public animal {public : int a;};void run() {...原创 2020-03-10 20:47:24 · 103 阅读 · 0 评论 -
C++运算符重载
关键字 operator定义: 对已有的运算符进行重定义,赋予另一种功能分为: 成员函数重载 和 全局函数重载1.加法运算符重载class person { friend void run();//设置友元private: int num;;public: person(int num) { this->num = num; } person& operat...原创 2020-03-08 20:15:26 · 160 阅读 · 1 评论 -
C++友元
友元的目的让一个类或函数去访问另一个类中的私有成员关键字friend分类:全局函数做友元类友元成员函数做友元1.全局函数做友元class Bulid { friend void run();//设置友元public: Bulid(); string setingroom;private: string bedroom;};//类外实现成员函数Bulid::B...原创 2020-03-07 14:06:58 · 115 阅读 · 0 评论 -
C++ this指针
this指针的用途1.this指向被调用成员函数所属的对象class stu {public: int num; stu(int num) { this->num = num;//this指向被调用成员函数所属的对象 } void get() { cout << num << endl; }};int main(){ stu s(...原创 2020-03-04 19:33:39 · 214 阅读 · 0 评论 -
C++ 静态成员
静态成员变量1.所有对象共享一份内存2.在编译阶段分配内存3.类内声明,类外初始化注意点静态成员一定要初始化(分配内存)初始化格式 :<数据类型><类名>::<静态数据成员名>=<值>class Stu {public: static int num;}int Stu::num=10;为神魔一定要初始化呢?应该说“...原创 2020-03-03 23:49:56 · 218 阅读 · 0 评论 -
C++ 初始化列表(初始化属性)及类对象作为类成员处理的先后问题
初始化列表(初始化属性)语法: 构造函数():属性1(值),属性2(值),属性3(值)…class Stu {public: int grade; string name; string six; Stu(string a,int b,string c) :name(a), grade(b), six(c) { //a,b,c的值付给属性 name grade six co...原创 2020-03-03 23:15:09 · 445 阅读 · 0 评论 -
构造函数和析构函数
每日文摘我感冒了 ,因为我对你没有抵抗力。构造函数和析构函数注意:程序会在对象销毁前自动调用析构函数一. 构造参数的分类按有参无参分为 :有参构造和无参构造按类型分:普通构造和拷贝构造class stu {public: //无参构造 stu() { cout << "无参构造" << endl; } //有参构造 stu(int p...原创 2020-03-01 23:30:23 · 280 阅读 · 0 评论 -
C++类的访问权限
每日文摘简约不是少,而是没有多余,足够也不是多,而是刚好你在。类的访问权限public :类内可以访问,类外也可以访问。protected:类内可以访问,类外不可以访问,子类可以访问父类中的保护内容。private: 类内可以访问,类外不可以访问,子类不可以访问父类中的保护内容。class Student {public: string name;protected: s...原创 2020-03-01 18:22:41 · 820 阅读 · 0 评论 -
C++函数的默认参数,占位,重载
函数的默认参数void f(int a=10,int b=20){cout<<a+b;}int main(){f();//30}注意点1.函数某个位置参数有默认值,则这个位置后的参数都必须有默认值2.函数的声明有默认参数,则函数的传建便不能有(编译器为了防止二义性,比如构建函数时默认参数是10,声明时又变成20,编译器该信谁?)函数的占位参数void f(in...原创 2020-02-29 23:23:18 · 276 阅读 · 0 评论 -
C++引用
1.给变量起别名语法 :数据类型 &别名 =原名注意 引用必须初始化,初始化后引用对象不可改变过int main() { int a = 10; int& b = a;//引用 共用地址 b = 20;//修改b会影响a cout << "a:" << a << endl;//a:20 cout << "b:" &...原创 2020-02-28 21:34:24 · 120 阅读 · 0 评论 -
C++的内存模型
C++中将内存大体分为四大块代码区:存放函数的二进制代码,由操作系统进行管理。全局区:全局变量 静态变量,常量(由const修饰的局部常量除外)栈区:由编译器自动释放,存储函数的参数,局部变量堆区:有程序猿主动释放,若程序员不释放,程序结束时操作系统自动释放主要利用new在堆中开辟内容注意点:1.在程序运行前分为代码区和全局区2.代码区代码区具有共享性和只读性3.全局区中的常量区...原创 2020-02-28 19:18:33 · 270 阅读 · 0 评论 -
C++结构体
#include<iostream>#include<string>using namespace std;struct Student//结构体定义{ string name; int age; int grade;};struct Teacher { string name; int age; Student student;};//结构体做...原创 2020-02-27 18:34:26 · 107 阅读 · 0 评论 -
const修饰指针
const修饰指针 常量指针指针指向的值不能改,指针指向的地址可以改int a=10;int b=10;const int* p=&a;*p=20;//错 指针指向的值不能改p=&b;//对 指针指向的地址可以改const修饰常量 指针常量指针指向的值可以改,指针指向的地址不能改int a=10;int b=10;int * const p=&a;...原创 2020-02-26 21:29:18 · 102 阅读 · 0 评论 -
C++基础知识(建议从后往前看)
刚才一口气快进着看了几十集C++,瞬间感觉又过了一边大一,这些集主要复习C语言,我也将C++中不一样的地方和C语言中模糊不清的地方整理了一下。客官请往下看1.常量的定义常量的两种定义方式1.1 #define 宏常量1.2 const 修饰的变量 变量名 常量名=常量值#include<iostream>using namespace std;#define YE...原创 2020-02-24 22:23:16 · 377 阅读 · 0 评论