![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
(; ̄ェ ̄)。
这个作者很懒,什么都没留下…
展开
-
C++ 系统标准的输入输出流
1.流的概念和流类库的结构(了解)标准IO:对系统的标准输入输出设备进行读写文件IO:对磁盘进行输入输出读写串IO:对内存进行读写2.成员函数cin.get() //一次只能读取一个字符cin.get(一个参数) //读一个字符cin.get(两个参数) //可以读字符串cin.getline()//取一行,换行符丢弃cin.ignore()//忽略cin.peek()//偷窥cin.putback()//放回cin.sync()cin.fail()原创 2022-09-07 21:38:05 · 507 阅读 · 0 评论 -
C++ 类模板继承
C++ 类模板继承原创 2022-09-05 22:30:22 · 364 阅读 · 0 评论 -
C++中静态成员用法
C++中静态成员,const修饰的静态成员变量原创 2022-08-22 22:10:47 · 475 阅读 · 0 评论 -
C++ 构造函数,拷贝构造
调用拷贝构造函数的时机原创 2022-08-19 22:00:35 · 446 阅读 · 0 评论 -
C++ STL vector容器中堆用法
#include <vector>#include <iostream>#include <algorithm>using namespace std;void test(){ vector<double>numbers={2.5,10.0,3.5,6.5,8.0,12.0,1.5,6.0}; // 大顶堆 make_heap(begin(numbers), end(numbers), less<double>()); ..转载 2022-04-06 13:33:48 · 264 阅读 · 0 评论 -
C++ vector容器集合运算
set_intersection 求两个set集合的交集set_union 求两个set集合的并集set_difference 求两个set集合的差集注意:两个集合必须是有序序列@param beg1 容器1开始迭代器@param end1 容器1结束迭代器@param beg2 容器2开始迭代器@param end2 容器2结束迭代器@param dest 目标容器开始迭代器@return 目标容器的最后一个元素的迭代器地址#include<iostrea...原创 2022-01-07 15:24:01 · 407 阅读 · 0 评论 -
C++ vector容器元素替换、拷贝
#include<iostream>#include<string>#include<vector>#include<algorithm>#include<functional>#include<iterator>using namespace std;//copy 将容器内指定范围的元素拷贝到另一容器中void test01() { vector<int>v1; for (int i = 0; i .原创 2022-01-07 14:16:41 · 8210 阅读 · 0 评论 -
C++ vector容器元素排序
#include<iostream>#include<vector>#include<algorithm>#include<functional>#include<ctime>using namespace std;class myCompareClass {public: bool operator()(int v1,int v2)const { return v1 > v2; }};bool myCom.原创 2022-01-07 12:49:34 · 610 阅读 · 0 评论 -
C++ 查找vector容器中元素
#include<iostream>#include<vector>#include<algorithm>#include<functional>#include<string>using namespace std;void test01() { vector<int> v1; for (int i = 1; i <= 10; ++i) { v1.push_back(i); } vector<.原创 2022-01-07 11:56:43 · 3941 阅读 · 1 评论 -
C++ vector容器遍历,复制
#include<iostream>#include<vector>#include<functional>#include<algorithm>using namespace std;void myPrint01(int v1) { cout << v1 << " ";}class myPrint02 {public: void operator()(int v1) { cout << v.原创 2022-01-06 20:55:19 · 543 阅读 · 0 评论 -
C++STL(九)适配器基本使用
#include<iostream>#include<vector>#include<string>#include<functional>#include<algorithm>using namespace std;class myPrint :public binary_function<int, int, void> {public: void operator()(int val,int start) co.原创 2022-01-06 19:48:35 · 180 阅读 · 0 评论 -
C++STL(八)谓词、内建函数对象
谓词谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。如果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。内建函数对象STL内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能。使用内建函数对象,需要引入头文件 #include<functional>。1.6个算数类原创 2022-01-06 13:33:57 · 125 阅读 · 0 评论 -
C++STL(七)map容器
map/multimap基本概念Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。Map和list拥有相同的某些性质,当对它的容器元素进行新增操作或者删除操作时,操作之前的所有迭代.原创 2022-01-05 18:34:18 · 145 阅读 · 0 评论 -
C++STL (六) set容器
set构造函数set<T> st;//set默认构造函数:mulitset<T> mst; //multiset默认构造函数:set(const set &st);//拷贝构造函数set赋值操作set& operator=(const set &st);//重载等号操作符swap(st);//交换两个集合容器set大小操作size();//返回容器中元素的数目empty();//判断容器是否为空set插入和删除操作insert(el原创 2022-01-05 15:47:56 · 105 阅读 · 0 评论 -
C++STL(五)list容器
list容器基本概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list就显得负责许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素的移原创 2022-01-05 11:29:48 · 86 阅读 · 0 评论 -
C++STL(四) stack、queue容器
stack容器基本概念stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.ueue容器基本概念Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queu原创 2022-01-04 17:23:52 · 107 阅读 · 0 评论 -
C++STL(三) deque容器
deque容器基本概念Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行元素的插入和删除操作。二在于deque没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像vector那样原创 2022-01-04 14:05:29 · 242 阅读 · 0 评论 -
C++ STL(二)string容器
C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件<string>。String和c风格字符串对比:Char*是一个指针,String是一个类string封装了char*,管理这个字符串,是一个char*型的容器。String封装了很多实用的成员方法查找find,拷贝copy,删除delete 替换replace,插入insert不用考虑内存释放和越界string管理char*所分配的内存。每.原创 2022-01-04 13:01:09 · 187 阅读 · 0 评论 -
C++STL(一) vector容器
STL六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器Vector所采用的数据结构非常简单,线性连续空间,它以两个迭代器_Myfirst和_Mylast分别指向配置得来的连续空间中目前已被使用的范围,并以迭代器_Myend指向整块连续内存空间的尾端。为了降低空间配置时的速度成本,vector实际配置的大小可能比客户端需求大一些,以备将来可能的扩充,这边是容量的概念。换句话说,一个vector的容量永远大于或等于其大小,一旦容量等于大小,便是满载,下次再有新增元素,整个vector.原创 2022-01-04 12:57:30 · 706 阅读 · 0 评论 -
C++输入输出流(十七)
标准输入流 cin.get() 获取一个字符 cin.get(两个参数) 获取字符串 利用cin.get获取字符串时候,换行符遗留在缓冲区中 cin.getline() 获取字符串 利用cin.getline获取字符串时候,换行符不会被取走,也不在缓冲区中,而是直接扔掉 cin.ignore() 忽略 默认忽略1个字符, 如果填入参数X,代表忽略X个字符 cin.peek() 偷窥 cin.putback() 放回 放回原位置 标准输出流 cout.p...原创 2022-01-02 18:46:51 · 116 阅读 · 0 评论 -
C++读写文件(十六)
头文件 #inlcude < fstream> 写文件 ofstream ofs (文件路径,打开方式 ios::out ) 判断文件是否打开成功 ofs.is_open ofs << “…” 关闭文件 ofs.close(); 读文件 ifstream ifs(文件路径,打开方式 ios::in) 判断文件是否打开成功 ofs.is_open 利用4种方式 对文件进行读取 关闭文件 ifs.close(); #incl...原创 2022-01-02 18:24:19 · 1640 阅读 · 0 评论 -
C++异常(十五)
异常的基本语法 C++异常的处理关键字 try throw catch 可以出现异常的代码 放到 try块 利用throw抛出异常 利用catch捕获异常 catch( 类型) 如果想捕获其他类型 catch(…) 如果捕获到的异常不想处理,而继续向上抛出,利用 throw 异常必须有函数进行处理,如果都不去处理,程序自动调用 terminate函数,中断掉 异常可以是自定义数据类型 栈解旋 从try代码块开始,到throw抛出异常之前,所有栈上的数据都会..原创 2022-01-02 15:01:49 · 147 阅读 · 0 评论 -
C++类型转换(十四)
静态类型转换 static_cast 语法 static_cast<目标类型>(原变量/原对象) 允许父子之间的指针或者引用的转换 允许内置数据类型转换 动态类型转换 dynamic_cast 不允许内置数据类型转换 允许父子之间指针或者引用的转换 父转子 不安全的 转换失败 子转父 安全 转换成功 如果发生多态,总是安全,可以成功 语法 dynamic_cast<目标类型>(原变量/原对象) 常量转换 cons...原创 2022-01-02 11:35:02 · 234 阅读 · 0 评论 -
C++类模板(十三)
类模板和函数模板区别: 类模板不可以使用自动类型推导,只能用显示指定类型 类模板中 可以有默认参数 #include<iostream>#include<string>using namespace std;template<class type_name = string, class type_age = int>//template<class type_name , class type_age>class person {p原创 2022-01-01 18:14:22 · 108 阅读 · 0 评论 -
C++模板(十二)
函数模板泛型编程 – 模板技术 特点:类型参数化 template< typename T > 告诉编译器后面紧跟着的函数或者类中出现T,不要报错,T是一个通用的数据类型 实现通用两个数进行交换函数 使用 自动类型推导 必须要推导出一致的T才可以使用 示指定类型 mySwap<int>(a,b); 函数模板和普通函数的区别以及调用规则区别 如果使用自动类型推导,是不可以发生隐式类型转换的 普通函数 可以发生隐式类型转换 调用规则 如果函...原创 2022-01-01 12:25:24 · 73 阅读 · 0 评论 -
C++多态(十一)
多态的好处:扩展性强、组织结构清晰、代码可读性强示例#include<iostream>using namespace std;class make_drink {public: virtual void boil() = 0; virtual void brew() = 0; virtual void inCup() = 0; virtual void putSomething() = 0; void makedrink() { boil(); brew().原创 2021-12-31 16:34:11 · 241 阅读 · 0 评论 -
C++继承中,构造函数和析构函数执行顺序(十)
示例#include<iostream>using namespace std;class father {public: father() { cout << "fater" << endl; } ~father() { cout << "fater" << endl; }};class son:public father {public: int num; son(int num) { this-&原创 2021-12-29 13:07:22 · 441 阅读 · 0 评论 -
C++继承(九)
公共继承 父类中私有权限,子类不能访问 父类中保护权限,子类中变为保护权限 父类中公共权限,子类中变为公共权限 保护继承 父类中公共权限,子类中变为保护权限 父类中保护权限,子类中变为保护权限 父类中私有权限,子类不能访问 私有继承 父类中公共权限,子类中变为私有权限 父类中保护权限,子类中变为私有权限 父类中私有权限,子类不能访问 父类中私有属性也会继承,但是在子类中无法访问#include<iostream>using namespace原创 2021-12-29 12:45:00 · 174 阅读 · 0 评论 -
C++ 运算符重载(八)
加号运算符重载、减号运算符重载、左移和右移运算符重载、赋值运算符重载、关系运算符重载、前置加加和后置加加运算符重载、数组下标运算符重载、指针运算符重载、函数重载原创 2021-12-27 14:55:47 · 647 阅读 · 0 评论 -
C++ 友元(七)
全局函数作为友元函数 friend 类型 函数名(类名* 变量名); 类作为友元类 friend class 类名; 类中的成员函数作为友元函数 friend void 类名::类中函数名(); #include<iostream>#include<string>using namespace std;class building;class room {private: int rid; int num; buildi...原创 2021-12-26 16:41:57 · 148 阅读 · 0 评论 -
C++ 单例、链式编程(六)
单例模式 通过一个类 只能实例化唯一的一个对象 构造函数私有化,对外开放一个静态成员函数 类中静态成员变量 静态成员变量也是有访问权限 访问方式有两种:通过对象访问、通过类名访问 类内声明、类外初始化 编译阶段就分配内存 所有对象都共享同一份数据 类中静态成员函数 所有对象都共享同一份函数 静态成员函数 只可以访问 静态成员变量,不可以访问非静态成员变量 静态成员函数 也是有访问权限的 静态成员函数 有两种访问方式:通过对象 、通过类名 单例...原创 2021-12-26 13:55:25 · 343 阅读 · 0 评论 -
C++ 构造函数和析构函数(五)
构造函数 构造函数 由编译器自动调用一次 无须手动调用 可以有参数 ,可以发生重载 函数名 与 类名相同 没有返回值 不用写void 析构函数 没有返回值 不用写void 函数名 与类名相同 函数名前 加 ~ 不可以有参数 ,不可以发生重载 析构函数 也是由编译器自动调用一次,无须手动调用 #include <iostream>#include<iomanip>#include<cmath>using name...原创 2021-12-25 15:49:07 · 289 阅读 · 0 评论 -
C++ class类(四)
设计一个类 class + 类名 { 成员变量 成员函数 } 将属性和行为作为一个整体,来表现生活中的事物 将属性和行为 加以权限控制 访问权限 公共权限 public 类内 类外 都可以访问 私有权限 private 类内可以访问 类外不可以访问 保护权限 protected类内可以访问 类外不可以访问 class 默认权限 私有权限 而 struct默认权限是 公共权限 通过类创建对象过程 称为 实例化对象 函数的默认...原创 2021-12-24 18:56:42 · 101 阅读 · 0 评论 -
C++ 变量、常量、指针基本引用方法(三)
#include <iostream>using namespace std;void test02(int& c, int& d);void test01() { //普通变量引用 int a = 10; int& b = a; //int*b=&a; cout << "b=" << b << endl; //cout <<"b=" <&l.原创 2021-12-24 12:56:56 · 214 阅读 · 0 评论 -
C++ const(二)
C++ const常量原创 2021-12-24 12:03:06 · 75 阅读 · 0 评论 -
C++命名空间(一)
1、C++ namespace命名空间原创 2021-12-24 10:54:26 · 206 阅读 · 0 评论