C++
文章平均质量分 95
RWCC
这个作者很懒,什么都没留下…
展开
-
STL总结
STL总结一、STL的本质二、STL的六大组件容器算法总结一、STL的本质通过前面的学习以及使用,我们对STL已经有了一定的认识。通俗说:STL是Standard Template Library(标准模板库),是高效的C++程序库,其采用泛型编程思想对常见数据结构(顺序表,链表,栈和队列,堆,二叉树,哈希)和算法(查找、排序、集合、数值运算…)等进行封装,里面处处体现着泛型编程程序设计思想以及设计模式,已被集成到C++标准程序库中。具体说:STL中包含了容器、适配器、算法、迭代器、仿函数以及空间配置器原创 2022-05-29 21:05:11 · 314 阅读 · 0 评论 -
C++的类型转换
C++的类型转换一、C语言中的类型转换二、为什么C++需要四种类型转换三、C++强制类型转换static_castreinterpret_castconst_castdynamic_castexplicit四、RTTI一、C语言中的类型转换在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败显式原创 2022-06-02 08:15:00 · 1692 阅读 · 0 评论 -
C++智能指针
智能指针一、为什么需要智能指针?二、内存泄漏内存泄漏分类如何避免内存泄漏三、智能指针的使用及原理RAII智能指针的原理std::auto_ptrstd::unique_ptrstd::shared_ptr线程安全问题四、C++11和boost中智能指针的关系一、为什么需要智能指针?下面我们先分析一下下面这段程序有没有什么内存方面的问题?#include <vector>void _MergeSort(int* a, int left, int right, int* tmp) {原创 2022-06-01 10:00:00 · 263 阅读 · 0 评论 -
C++ 异常
文章目录一、C语言传统的处理错误的方式二、C++异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范四、自定义异常体系五、C++标准库的异常体系六、异常的优缺点C++异常的优点C++异常的缺点一、C语言传统的处理错误的方式传统的错误处理机制:终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误C 标准库中setjmp和longjmp原创 2022-05-31 09:15:00 · 3090 阅读 · 2 评论 -
C++ 11特性
C++ 11一、C++11简介二、列表初始化C++98中{}的初始化问题自定义类型的列表初始化三、变量类型推导decltype类型推导四、范围循环for五、final与override六、智能指针七、新增加容器--静态数组array、forward_list以及unordered系列八、默认成员函数控制显式缺省函数删除默认函数九、右值引用左值和右值引用与右值引用比较一、C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++1原创 2022-05-30 10:45:00 · 198 阅读 · 0 评论 -
哈希及其原理
哈希一、unordered系列关联式容器unordered_mapunordered_set在线OJ二、哈希哈希概念一、unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同原创 2022-05-29 08:45:00 · 255 阅读 · 0 评论 -
map和set
map和set一、关联式容器二、键值对三、树形结构的关联式容器四、setset的使用set的构造set的迭代器set的容量set修改操作set的使用举例五、mapmap的使用map的模板参数说明map的构造map的迭代器map的容量与元素访问map中元素的修改六、multisetmultiset的使用七、multimapmultimap的使用一、关联式容器关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。原创 2022-05-26 11:00:00 · 128 阅读 · 0 评论 -
C++多态
多态一、多态的概念二、多态的定义及实现多态的构成条件虚函数虚函数的重写C++11 override 和 final重载、覆盖(重写)、隐藏(重定义)的对比三、抽象类接口继承和实现继承四、多态的原理虚函数表总结一、多态的概念多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。二、多态的定义及实现多态的构成条件多态是在不同继承关系的类对象,去调用同一原创 2022-05-24 09:30:00 · 212 阅读 · 0 评论 -
C++中的继承
继承一、继承的概念及定义继承的概念继承定义继承关系和访问限定符继承基类成员访问方式的变化二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承虚拟继承解决数据冗余和二义性的原理八、继承的总结和反思总结一、继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次原创 2022-05-23 08:30:00 · 144 阅读 · 0 评论 -
stack和queue
stack和queue一、 stack的介绍和使用stack的使用stack的模拟实现二、queue的介绍和使用queue的使用queue的模拟实现三、priority_queue的介绍和使用priority_queue的使用四、容器适配器STL标准库中stack和queue的底层结构五、deque简单介绍deque的原理介绍deque的缺陷一、 stack的介绍和使用stack的文档介绍翻译:stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入原创 2022-05-22 16:00:00 · 191 阅读 · 0 评论 -
C++ list
list一、list的介绍及使用list的介绍list的使用list的构造list iterator的使用list modifierslist的迭代器失效二、list与vector的对比一、list的介绍及使用list的介绍list的文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似原创 2022-05-22 08:30:00 · 120 阅读 · 1 评论 -
C++ vector
vector一、vector的介绍及使用vector的定义vector iterator 的使用vector 空间增长问题vector 增删查改vector迭代器失效问题vector相关OJ二、vector深度剖析动态二维数组理解一、vector的介绍及使用vector的文档介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大原创 2022-05-21 16:34:05 · 613 阅读 · 0 评论 -
C++ string
string类前言一、标准库中的string类二、string类常用接口string类常见构造string类对象的容量操作string类对象的访问及遍历操作string类对象的修改操作string类非成员函数前言C语言中的字符串:C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。一、标准库中的string类string类的文档介绍原创 2022-05-21 15:16:45 · 6454 阅读 · 0 评论 -
C++模板初阶
C++模板初阶一、泛型编程二、函数模板函数模板格式函数模板的原理函数模板的实例化模板参数的匹配原则三、类模板一、泛型编程如何实现一个通用的交换函数呢?void Swap(int& left, int& right) { int temp = left; left = right; right = temp; }void Swap(double& left, double& right) { double temp = left; left原创 2022-03-30 15:40:16 · 154 阅读 · 5 评论 -
C&C++内存管理
C&C++内存管理一、C/C++内存分布二、C语言中动态内存管理方式三、C++内存管理方式new/delete操作内置类型new和delete操作自定义类型四、operator new与operator delete函数operator new与operator delete函数一、C/C++内存分布我们先来看下面的一段代码和相关问题:int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int sta原创 2022-03-27 11:11:21 · 112 阅读 · 7 评论 -
类和对象(下)
类和对象下一、再谈构造函数构造函数体赋值初始化列表explicit关键字二、 static成员概念特性三、友元友元函数友元类四、内部类一、再谈构造函数构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; } private: int _year;原创 2022-03-22 15:46:12 · 106 阅读 · 3 评论 -
类和对象(上)
类和对象上前言一、类是什么类的定义二、使用步骤1.引入库2.读入数据总结前言面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成一、类是什么C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。但是在C++中更喜欢用class来代替。类的定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体原创 2022-03-21 22:17:17 · 126 阅读 · 1 评论 -
C++入门
C++入门一、C++关键字(C++98)二、命名空间命名空间定义命名空间使用三、缺省参数缺省参数概念四、函数重载概念五、引用引用概念引用特性常引用使用场景1.做参数2. 做返回值引用和指针的区别六、内联函数概念引用特性七、auto关键字(C++11)auto简介auto的使用细则八、指针空值nullptr(C++11)一、C++关键字(C++98)C++总计63个关键字,C语言32个关键字二、命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作原创 2022-03-15 23:00:39 · 162 阅读 · 12 评论