C/C++
yub4by
这家伙懒,啥都没留
展开
-
Relearn C++【catalogue】
课程来源:黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 第1阶段-C++基础入门(2-6) 第2阶段-实战:通讯录管理系统(7) 第3阶段-C++核心编程(8-12) 第4阶段-实战:基于多态的企业职工系统(13) 第5阶段-C++提高编程(14-18) 第6阶段-实战:基于STL泛化编程的演讲比赛(19) 第7阶段-实战:机房预约管理系统(20)......原创 2021-04-16 20:41:08 · 77 阅读 · 0 评论 -
16.3.1重学C++之【deque容器基本概念、构造函数】
#include<iostream>#include<stdlib.h>using namespace std;#include<deque>/* 3.3 deque容器 3.3.1 deque基本概念 双端数组,可以对头端进行插入删除操作(类似于队列?) deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低 .原创 2021-04-26 10:25:18 · 128 阅读 · 0 评论 -
16.2.3重学C++之【vertor互换空间、预留空间】
#include<iostream>#include<stdlib.h>#include<string>#include<vector>using namespace std;/* 3.2.7 vector互换空间 实现两个容器内元素进行互换 swap(vec); // 将vec与本身的元素互换 swap可以使两个容器互换,可以达到实用的收缩内存效果 3.2.8 vector预留.原创 2021-04-23 15:11:06 · 220 阅读 · 0 评论 -
16.2.2重学C++之【vertor容量和大小、插入和删除、数据存取】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<vector>/* 3.2.4 vector容量和大小 empty(); //判断容器是否为空 capacity(); //容器的容量 size(); //返回容器中元素的个数 resize(int n...原创 2021-04-23 14:37:54 · 284 阅读 · 0 评论 -
16.2.1重学C++之【vertor基本概念、构造函数、赋值操作】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<vector>/* 3.2 vector容器 3.2.1 vertor基本概念 vector数据结构和数组非常相似,也称为单端数组(类似于栈) 不同之处在于数组是静态空间,而vector可以动态扩展 .原创 2021-04-23 12:50:49 · 116 阅读 · 0 评论 -
16.1.6重学C++之【string字符存取、插入删除、子串截取】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;void test1(){ string str = "hello"; cout << str << endl; //read for(int i=0; i<str.size(); i++) { cout << st.原创 2021-04-23 11:13:26 · 148 阅读 · 0 评论 -
16.1.5重学C++之【string字符串比较】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 3.1.6 string字符串比较 字符串比较是按字符的ASCII码进行对比 = 返回 0 > 返回 1 < 返回 -1 int compare(const string &s) .原创 2021-04-22 22:06:10 · 268 阅读 · 0 评论 -
16.1.4重学C++之【string查找和替换】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 3.1.5 string查找和替换 int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找 int find(const char* s, int pos = 0) const.原创 2021-04-22 22:05:30 · 132 阅读 · 0 评论 -
16.1.3重学C++之【string字符串拼接】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 3.1.4 string字符串拼接 string& operator+=(const char* str); //重载+=操作符 string& operator+=(const char c); //重载+=操作符 string&.原创 2021-04-22 22:04:44 · 215 阅读 · 0 评论 -
16.1.2重学C++之【string赋值操作】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 3.1.3 string赋值操作 string& operator=(const char* s); //char*类型字符串 赋值给当前的字符串 string& operator=(const string &s); //把字符串s赋给当前的字符.原创 2021-04-22 22:03:52 · 344 阅读 · 0 评论 -
16.1.1重学C++之【string的基本概念和构造函数】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 3.1 string容器 3.1.1 string基本概念 string和char * 区别: char * 是一个指针 string是c++风格的字符串,实质是一个类,类内部封装了char*,管理这个字符串,是一个char*型的.原创 2021-04-22 22:02:22 · 236 阅读 · 0 评论 -
15.2.3重学C++之【vector容器嵌套容器】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include <vector>#include <algorithm>/* 2.5.3 vector容器嵌套容器*/void test1(){ vector< vector<int> > v; vector<int>.原创 2021-04-22 20:46:45 · 192 阅读 · 0 评论 -
15.2.2重学C++之【vector容器存放自定义数据类型】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<vector>#include<algorithm>/* 2.5.2 vector容器存放自定义数据类型*/class People{public: string name; int age; People(string _n.原创 2021-04-22 20:45:25 · 156 阅读 · 0 评论 -
15.2.1重学C++之【vector容器放置内置数据类型】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<vector>#include<algorithm>/* 2.5.1 vector放置内置数据类型 容器: vector 算法: for_each 迭代器: vector<int>::iterator*.原创 2021-04-22 20:44:26 · 96 阅读 · 0 评论 -
15.1重学C++之【标准模板库STL基础知识】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 2、初识STL 2.1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算.原创 2021-04-22 19:44:28 · 124 阅读 · 0 评论 -
14.2.9重学C++之【案例:类模板实现自定义通用数组】
MyArray.hpp#pragma once#include<iostream>#include<string>using namespace std;template<class T>class MyArray{public: // 有参构造 MyArray(int capacity) { cout << "MyArray的有参构造" << endl; this-&原创 2021-04-18 14:20:23 · 176 阅读 · 0 评论 -
14.2.8重学C++之【类模板与友元】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.3.8类模板与友元 掌握类模板配合友元函数的类内和类外实现 全局函数类内实现 - 直接在类内声明友元即可 全局函数类外实现 - 需要提前让编译器知道全局函数的存在*///提前让编译器知道Person类的存在template<class .原创 2021-04-18 14:16:17 · 127 阅读 · 0 评论 -
14.2.7重学C++之【类模板的分文件编写】
person.h#pragma once#include<iostream>#include<string>using namespace std;template<class T1, class T2>class Person{public: T1 name; T2 age; Person(T1 _name, T2 _age); void show();};person.cpp#include<原创 2021-04-18 14:15:16 · 284 阅读 · 0 评论 -
14.2.6重学C++之【类模板成员函数类外实现】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<typeinfo>/* 1.3.6类模板成员函数类外实现*/template<class T1, class T2>class Person{public: T1 name; T2 age; Person(T1 _name, T.原创 2021-04-18 14:12:16 · 83 阅读 · 0 评论 -
14.2.5重学C++之【类模板与继承】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<typeinfo>/* 1.3.5类模板与继承 当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型 如果不指定,编译器无法给子类分配内存 如果想灵活指定出父类中T的类型,子类也需变为类模板*/tem.原创 2021-04-18 14:11:23 · 101 阅读 · 0 评论 -
14.2.4重学C++之【类模板对象做函数参数】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;#include<typeinfo>/* 1.3.4类模板对象做函数参数 类模板实例化出的对象,向函数传参的方式 共有三种传入方式: 1. 指定传入的类型 --- 直接显示对象的数据类型 (最常用) .原创 2021-04-18 11:19:26 · 160 阅读 · 0 评论 -
14.2.3重学C++之【类模板中成员函数创建时机板】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.3.3类模板中成员函数创建时机 类模板中成员函数和普通类中成员函数创建时机是有区别的: 普通类中的成员函数一开始就可以创建 类模板中的成员函数在调用时才创建*/class Person1{public: void sh.原创 2021-04-17 21:18:33 · 134 阅读 · 0 评论 -
14.2.2重学C++之【类模板和模板函数的区别】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.3.2类模板和模板函数的区别 1. 类模板没有自动类型推导的使用方式 2. 类模板在模板参数列表中可以有默认参数(函数模板不可以有默认)*/template<class NameType, class AgeType>class Person{.原创 2021-04-17 21:17:40 · 192 阅读 · 0 评论 -
14.2.1重学C++之【初识类模板】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.3类模板 1.3.1类模板语法 作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表 语法:template<typename/class T> 类*/template<clas.原创 2021-04-17 20:08:36 · 85 阅读 · 0 评论 -
14.1.6重学C++之【模板的局限性】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.2.6模板的局限性 模板的通用性并不是万能的*/// ******************************************template<class T>bool my_compare(T & a, T & b){ i.原创 2021-04-17 20:07:33 · 92 阅读 · 0 评论 -
14.1.5重学C++之【普通函数和函数模板的调用规则】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.2.5普通函数和函数模板的调用规则 1. 如果函数模板和普通函数都可以实现,优先调用普通函数 2. 可以通过空模板参数列表来强制调用函数模板 3. 函数模板也可以发生重载 4. 如果函数模板可以产生更好的匹配,优先调用函数模板*/.原创 2021-04-17 20:06:45 · 125 阅读 · 0 评论 -
14.1.4重学C++之【普通函数和函数模板的区别】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.2.4 普通函数和函数模板的区别 普通函数调用时可以发生自动类型转换(隐式类型转换) 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换 如果利用显示指定类型的方式,可以发生隐式类型转换*/// 普通函数int my_add_1(in.原创 2021-04-17 20:06:03 · 125 阅读 · 0 评论 -
14.1.3重学C++之【函数模板案例】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.2.3函数模板案例 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序*/template<class T>void my_swap(T&x, T&y){ T temp =.原创 2021-04-17 20:05:16 · 69 阅读 · 0 评论 -
14.1.2重学C++之【函数模板注意事项】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.2.2函数模板注意事项 自动类型推导,必须推导出一致的数据类型T,才可以使用 模板必须要确定出T的数据类型,才可以使用*/template<class T> // typename可以替换为classvoid my_swap(T&x, T.原创 2021-04-17 20:04:16 · 110 阅读 · 0 评论 -
14.1.1重学C++之【初识函数模板】
#include<iostream>#include<stdlib.h>#include<string>using namespace std;/* 1.1模板概念 C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板*//* 1.2函数模板 1.2.1函数模板语法 作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定.原创 2021-04-17 20:03:22 · 188 阅读 · 0 评论 -
13重学C++之【综合案例:职工管理系统】
work.h#pragma once#include<iostream>#include<string>using namespace std;// 职工抽象类class Worker{public: int id; string name; int dept_id; virtual void show_info() = 0; virtual string get_dept() = 0;};employee.h原创 2021-04-17 15:16:30 · 396 阅读 · 0 评论 -
12.2.2重学C++之【读二进制文件】
#include<stdlib.h>#include<iostream>#include<string>#include<fstream>using namespace std;/* 5.2.2 读二进制文件 二进制方式读文件主要利用流对象调用成员函数read 函数原型:istream & read(char * buffer, int len); 参数解释:字符指针buffer.原创 2021-03-18 15:33:23 · 139 阅读 · 0 评论 -
12.2.1重学C++之【写二进制文件】
#include<stdlib.h>#include<iostream>#include<string>#include<fstream>using namespace std;/* 5.2.1 写二进制文件 二进制方式写文件主要利用流对象调用成员函数write 函数原型 :ostream & write(const char * buffer, int len); 参数解释:字.原创 2021-03-18 15:32:33 · 148 阅读 · 0 评论 -
12.1.2重学C++之【读文本文件】
#include<stdlib.h>#include<iostream>#include<string>#include<fstream> // 包含头文件using namespace std;/* 5.1.2 读文本文件 读文件可以利用 ifstream ,或者fstream类*/void test1(){ // 1 包含头文件<fstream> // 2 创建流对象 .原创 2021-03-18 15:31:18 · 66 阅读 · 0 评论 -
12.1.1重学C++之【写文本文件】
#include<stdlib.h>#include<iostream>#include<string>#include<fstream> // 包含头文件using namespace std;/* 5 文件操作 5.1 文本文件 5.1.1 写文本文件 --12.1.1 5.1.2 读文本文件 5.2 二进制文件 5.2.1 .原创 2021-03-18 15:30:25 · 274 阅读 · 0 评论 -
11.7.6重学C++之【多态案例3--电脑组装】
#include<stdlib.h>#include<iostream>#include<string>using namespace std;/* 4.7.6 多态案例3--电脑组装 案例描述: 电脑主要组成部件为 CPU(用于计算),显卡(用于显示),内存条(用于存储) 将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商 .原创 2021-03-18 10:37:53 · 160 阅读 · 0 评论 -
11.7.5重学C++之【虚析构和纯虚析构】
#include<stdlib.h>#include<iostream>#include<string>using namespace std;/* 4.7.5 虚析构和纯虚析构 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码 解决方式:将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: 可以解决父类指针释放子类对象 .原创 2021-03-18 10:37:38 · 136 阅读 · 0 评论 -
11.7.4重学C++之【多态案例2--制作饮品】
#include<stdlib.h>#include<iostream>#include<string>using namespace std;/* 4.7.4 多态案例2--制作饮品 案例描述: 制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*/class AbstractDrinkin.原创 2021-03-18 10:37:23 · 210 阅读 · 0 评论 -
11.7.3重学C++之【纯虚函数和抽象类】
#include<stdlib.h>#include<iostream>#include<string>using namespace std;/* 4.7.3 纯虚函数和抽象类 在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容,因此可以将虚函数改为纯虚函数 纯虚函数语法:virtual 返回值类型 函数名 (参数列表)= 0 ; 当类中有了纯虚函数,这个类也称为抽象类 .原创 2021-03-18 10:37:09 · 118 阅读 · 0 评论 -
11.7.2重学C++之【多态案例--计算器类】
#include<stdlib.h>#include<iostream>#include<string>using namespace std;/* 4.7.2 多态案例--计算器类 案例描述: 分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类 多态的优点: 代码组织结构清晰 可读性强 利于前期和后期的扩展.原创 2021-03-18 10:36:48 · 182 阅读 · 0 评论