C++
文章平均质量分 93
wu
4nc414g0n
这个作者很懒,什么都没留下…
展开
-
C++----unordered_map unordered_set使用及模拟
.原创 2022-09-10 14:00:14 · 567 阅读 · 0 评论 -
C++----IO流(参考C++ primer)
。原创 2022-09-04 20:44:04 · 539 阅读 · 0 评论 -
C++----类型转换
。原创 2022-09-01 19:36:14 · 453 阅读 · 0 评论 -
C++进阶---智能指针
。原创 2022-08-31 10:39:50 · 748 阅读 · 0 评论 -
C++进阶---异常
异常引入C++异常概念与语法使用异常重新抛出异常安全异常规范自定义异常体系标准库异常exception异常的优缺点引入C语言常见错误处理方式:(传统的错误处理机制:)终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误C 标准库中setjmp和longjmp组合C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的错误原创 2022-05-21 15:52:41 · 154 阅读 · 0 评论 -
C++进阶---C++11
C++111)初始化{}初始化std::initializer_list2)1)初始化{}初始化struct Point{ int _x; int _y; Point(int x, int y) :_x(x) , _y(y) {}};class Date{public: Date(int year, int month, int day) :_year(year) , _month(month) , _day(day) { cout << "原创 2022-03-18 23:25:43 · 1587 阅读 · 0 评论 -
C++---设计模式(MARK一下)
设计特殊类1)引入①设计一个不能被拷贝的类②设计一个不能被继承的类③设计一个只能在堆上创建空间的类法一(简单但不通用)法二(标准且通用)④设计一个只能在栈上创建空间的类2)单例模式3)工厂模式4)观察者模式1)引入①设计一个不能被拷贝的类在使用库函数copy时会调用拷贝构造,在栈上创建空间参考:test::heap_only2* ptr = test::heap_only2::Create();test::heap_only2 copy(*ptr);delete ptr;防止拷贝,只声原创 2022-03-17 19:23:05 · 1230 阅读 · 0 评论 -
C++进阶---Map和Set使用及模拟实现
Map和Set使用及模拟实现1)引入pairmake_pair2)树形结构的关联式容器(STL分为树形结构和哈希结构)①set注意迭代器构造 容量(略)修改操作②multiset注意迭代器 构造 容量 修改(略)操作③map注意③multimap1)引入关联式容器与序列式容器: 关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高键值对: 用来表示具有一 一对应关系的一种结构,该结构中一般只包含两个成原创 2022-02-21 22:21:25 · 965 阅读 · 0 评论 -
C++进阶----多态
C++进阶----多态2)多态①多态实现虚函数重写Ⅰ.特例1--协变Ⅱ.特例2--析构函数重写override final重载 / 重写 / 隐藏②抽象类2)多态①多态实现多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为比如:多态的构成条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数重写虚函数的重写(覆盖):派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数原创 2022-01-29 15:05:21 · 1176 阅读 · 0 评论 -
C++进阶----继承
C++进阶----继承原创 2022-01-28 11:12:45 · 1159 阅读 · 0 评论 -
C++初阶---array forward_list 模板进阶
array forward_list 模板进阶arraryforward_list模板的特化1.函数模板特化2.类模板特化①全特化②偏特化模板分离编译arrary静态数组注意:浮点数,类对象以及字符串是不允许作为非类型模板参数的非类型的模板参数必须在编译期就能确认结果在32位Linux下栈很小只有8MB不建议使用:如果数据量过大会造成栈溢出对比vevtor:vector只有12byte地址在栈上,开辟的空间都在堆上参考:arrayforward_list单向链表注意f原创 2021-11-30 23:36:28 · 1056 阅读 · 0 评论 -
C++初阶----priority_queue模拟实现+仿函数
priority_queue模拟实现+仿函数1)优先队列1. 介绍2. 操作3. 模拟实现①结构②构造函数③成员函数(empty,size,top)④成员函数(push pop)2)仿函数仿函数(变异版本)3) `typename`???? `T`???特殊情况(hash 红黑树部分)1)优先队列1. 介绍参考:priority_queue优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优原创 2021-11-25 22:26:13 · 712 阅读 · 0 评论 -
C++初阶----deque(双端队列)+stack queue模拟实现
stack queue模拟实现+dequedeque(双端队列)概念结构deque迭代器应用(优缺点)stackqueuedeque(双端队列)概念deque(双端队列):是一种双开口的"连续"空间的数据结构(和队列没关系),双开口的含义是:可以头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高结构deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底原创 2021-11-23 23:46:09 · 1425 阅读 · 0 评论 -
C++初阶----list模拟实现 +(迭代器总结)
list模拟实现1)list介绍2)list使用①list构造函数②list的访问及遍历③list容量操作③list修改④list操作3)list模拟实现(结构:三个类)Ⅰ.节点类Ⅱ. List的迭代器类1.构造默认构造和拷贝构造2.运算符重载①解引用*和->重载②前置/后置++/ - -③关系运算符!= ==重载Ⅲ. list类1.构造2.赋值运算符重载3. 容量4.修改操作inserterase5.非成员函数重载4)迭代器总结1)list介绍结构,list的迭代器用类封装为了实现重载,<原创 2021-11-11 22:23:12 · 2100 阅读 · 0 评论 -
C++初阶---vector的使用及模拟实现
vector使用及模拟实现vectorvector介绍vector使用①vector构造函数②vector的访问及遍历操作③vector常见容量操作③vector访问操作④vector修改操作vectorvector介绍template < class T, class Alloc = allocator<T> > class vector; // generic template① : vector是表示可以改变大小的数组的序列容器②: 就像数组一样,vector也原创 2021-11-06 22:02:10 · 1064 阅读 · 0 评论 -
C++初阶---string类的模拟实现
string类的模拟实现浅拷贝深拷贝string类的模拟实现1. 构造,拷贝构造,赋值操作符重载,析构2. iterator迭代器3. 涉及到容量的操作① reserve② reszie4. 访问① insert和insert的重载② erase③find及其重载④push_back append += []5.relational operator6. << >>重载和getline c_str浅拷贝看如下代码(构造):class string{public: str原创 2021-11-01 09:53:31 · 535 阅读 · 0 评论 -
C++初阶---STL入门+(string)
STL入门一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-10-26 23:55:11 · 463 阅读 · 0 评论 -
C++初阶---模板入门
模板入门泛型编程泛型编程有在这里插入代码片使用函数重载虽然可以实现,但是有一下几个不好的地方:重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数代码的可维护性比较低,一个出错可能所有的重载均出错...原创 2021-10-24 16:10:23 · 2289 阅读 · 0 评论 -
const,static总结
加粗样式原创 2021-10-24 01:12:44 · 205 阅读 · 0 评论 -
C++初阶---内存管理
内存管理引入(C部分回顾)C++内存管理new delete引入(C部分回顾)内核空间:属于操作系统范畴栈:(向下)函数调用建立栈帧,参数,函数中的局部变量都存在栈帧中堆:(向上)理论上而言,后malloc的内存地址比先malloc的大,但不一定,因为下一次申请的空间可能是之前释放的数据段:通常用来存放程序中已初始化的(非 0)全局变量和静态局部变量。数据段的起始位置由链接定位文件确认,大小在编译链接时自动分配。数据段属于静态内存分配代码段:代码段在内存中被映射为只读。它是由编译器在原创 2021-10-23 14:58:55 · 478 阅读 · 0 评论 -
C++初阶---类和对象(类的默认成员函数和其他)
类的默认成员函数和其他概览①构造函数1.概览2.特性3.特性分析:特性4特性5特性6特性84.构造函数体赋值5.初始化列表注意2注意3注意4总结6.关键字explicit②析构函数1.概览2.特性3.特性分析:特性5析构函数的调用③拷贝函数构造1.概览2.特性3.特性分析特性2特性3 和 特性4题目④赋值运算符重载1.运算符重载2.赋值运算符重载3.赋值运算符特性:4.特性分析:特性5自己实现的意义5.常见的运算符重载⑤ 取地址及const取地址操作符重载(两个只需要了解)取地址操作符重载const取地址操原创 2021-10-19 20:16:50 · 409 阅读 · 0 评论 -
题目--拷贝构造,析构,静态成员变量...
题目问:以下代码共调用多少次拷贝构造函数?Widget f(Widget u){ Widget v(u); Widget w=v; return w;}main(){ Widget x; Widget y=f(f(x));}知识点:传值传参和传值返回都会生成一个拷贝对象中间对象·临时对象,在一般情况下,一个对象拷贝构造出一个临时对象,一个临时对象再去拷贝构造另一个对象,一般编译器会进行优化,中间对象优化掉,直接第一个拷贝第三个(要求:在一个表达式执行的连续步原创 2021-10-14 13:57:00 · 366 阅读 · 0 评论 -
用Date类实现常用运算符重载
用Date类实现常用运算符重载原创 2021-10-13 00:12:16 · 539 阅读 · 0 评论 -
赋值运算符重载函数 引用返回 与 对象返回
引用返回 与 对象返回代码对象返回引用返回总结代码正确代码如下:(为了验证,我们自己加上了自定义析构函数和拷贝构造函数)#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;class Date{public: Date(int year = 0, int month = 1, int day = 1) { _year = year; _month = month; _day原创 2021-10-12 20:51:07 · 218 阅读 · 0 评论 -
C++初阶---类和对象(入门)
类和对象1)面向过程与面向对象2)类①类(class)的引入和定义引入定义②类的访问1. (初识)类的访问限定符2. 类的作用域3. 面向对象的三大特性之一:封装③类的实例化和对象模型实例化1. 计算类对象的大小2. 类对象的存储方式3. 结构体内存对齐规则3)this指针概念this指针的一些问题1)面向过程与面向对象C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成(注意: C原创 2021-10-09 13:59:33 · 499 阅读 · 0 评论 -
C++初阶---C++基础入门概览
C++基础入门1)前言2)C++关键字3)命名空间(namespace)namespace的使用1)前言1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。C++98:C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)C++11:增加了许多特性,使得C+原创 2021-09-25 15:54:42 · 1154 阅读 · 4 评论