C++
Top丶齊
Loading......
展开
-
C++类与对象
众所周知:c语言是一门面向过程的高级编程语言,而c++是一门面向对象的高级编程语言。两者之间的区别:C语言面向过程,关注的是过程,分析求解问题的步骤,通过函数调用逐步解决。C++基于面向对象,关注的是对象,将问题拆解为对象,通过对象交互完成求解。C++下对象的生成是依靠类来实现的。类是物质世界存在的抽象,这种抽象基于需求来选择。对象是类的实例化。类的定义:class classNa...原创 2019-04-04 15:06:31 · 103 阅读 · 0 评论 -
C++关联式容器(上)map,set的实现
基于红黑树实现的map:RBTree.hpp//RBTree.hpp#include<iostream>#include<time.h>using namespace std;enum COLOR{RED,BLACK};template<class V>//红黑树节点定义struct RBTNode{ RBTNode(const V...原创 2019-09-10 17:20:10 · 138 阅读 · 0 评论 -
C++关联式容器(上)底层基础
STL的容器大致分为两类,序列式容器和关联式容器,两者直接区分通过数据在容器中的排列来区分。 关联式容器也是用来存储数据的,与序列式容器不同的是,关联式容器内部存储的是键值对,数据检索时效率比序列式容器高。元素的获取方式: &nb...原创 2019-09-06 10:52:55 · 291 阅读 · 0 评论 -
C++智能指针
在普通指针使用时,需要记住分配的内存手动释放,否则就会造成内存泄漏。智能指针的用途是帮助程序员,管理内存资源的一种方式,不用手动的释放资源。智能指针是基于RAII思想产生的一种控制内存程序资源的方式。RAII RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源的简单技术。...原创 2019-09-05 22:01:16 · 95 阅读 · 0 评论 -
C++类型转换
C语言的类型转换隐式类型转换强制类型转换转换的可见性差,强制类型转换的安全性差。C++的类型转换标准C++为了增强类型转换的可视性,引入了四种强制类型转换操作符。static_castreinterpret_castconst_castdynamic_caststatic_caststatic_cast用于非多态的类型转换(静态转换),编译器任何隐式执行的类型转换都可...原创 2019-09-04 12:36:08 · 80 阅读 · 0 评论 -
C++异常
异常是指在程序运行过程中可预料的执行分支。bug是指程序中的错误,及不可预料的分支。C++异常处理概念异常处理是一种错误处理的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接调用者处理这个错误。throw:当问题出现时,程序会抛出一个异常,这是通过throw关键字完成的。try:try块中的代码标识着将会被激活的特定异常,后常接一个或多个catch块catc...原创 2019-09-04 09:43:58 · 103 阅读 · 0 评论 -
C++多态
多态就是一个事物再不同场景时的多种形态,编程语言中就是完成某个行为时,当不同对象去完成会产生不同的效果。多态的定义及实现调用函数的对象必须为指针或引用被调用函数必须是虚函数,且完成了虚函数的重写虚函数定义: 定义类的成员函数时,函数前加virtual关键字。虚函数的重写:&n...原创 2019-09-03 21:56:33 · 96 阅读 · 0 评论 -
C++继承
C++作为一门OOP语言,必定有面向对象语言的三大特性:封装,继承,多态.继承作为面向对象语言代码复用的重要手段,继承允许我们在原有类的基础上进行扩展,增加功能。继承是类层次上的复用,呈现面向对象语言的层次结构设计。继承的权限问题:public继承:直接继承基类中的public,protected成员为派生类的public,protected成员protecedt继承:继承基类中的pu...原创 2019-09-03 11:33:04 · 92 阅读 · 0 评论 -
对于模板的进一步理解
泛型编程的目的:发明一种语言机制,能够帮助实现一个通用的标准容器库。泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。泛型编程的代表作品:C++的STL(标准模板库)模板的参数分为类类型形参和非类型形参template<class T, typename T2, size_t N = 10>类类型形参:出现在参数列表,用cla...原创 2019-09-01 15:44:44 · 225 阅读 · 0 评论 -
简单理解容器适配器
适配器: 适配器是一种设计模式,将一个类的接口转换为用户希望的另一个类的接口,使接口不兼容的类一起工作,体现了代码复用的思想。通俗来说适配器是一种转换器,例如充电头,将220V电压转换为5V。STL的适配器有三种类型:容器适配器stack-queue-priority_queue迭代适配器函数适配器s...原创 2019-08-28 17:44:03 · 148 阅读 · 0 评论 -
C++容器中list总结及其实现
listlist为双向带头循环链表,由若干结点组成,每个结点都包含一个数据块,前驱指针和后驱指针。list存储在非连续的空间之中,所以相较vector来说list的随机检索能力很弱,检索时间复杂度为O(n)。优点:插入,删除元素的代价较小可在两端进行操作不需要连续的内存空间缺点:不支持随机访问 [ ], at内存占用多相关使用函数:push_back ...原创 2019-06-02 16:16:00 · 297 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译
为什么C++编译器不能支持对模板的分离式编译刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) 首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32)...转载 2019-05-14 19:46:51 · 111 阅读 · 0 评论 -
模拟实现Vector
#include<iostream>#include<assert.h>#include<string.h>#include<algorithm>using namespace std;template<class T>class Vector{ typedef T* Iterator; typedef const T*...原创 2019-04-20 10:50:36 · 132 阅读 · 0 评论 -
C++内存管理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190414164319296.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1NjAy,size_16,color_FFFFFF,t...原创 2019-04-14 16:52:55 · 182 阅读 · 0 评论 -
C++类与对象 进阶
类的默认成员函数List item构造函数析构函数List item拷贝构造函数取址运算符(&)重载赋值运算符重载const 修饰的取址运算符重载构造函数: 构造函数是一种特殊的成员函数,名称与类名相同,创建类类型对象时由编译器自动调用,生命周期只有一次。任务:不是开空间创建对象,而是初始化对象特征:无返回值对象实例化,自动调用构造函数构造函数可重载编译...原创 2019-04-14 16:07:48 · 192 阅读 · 0 评论 -
C++入门
C++ 是一门面向对象的语言。C++98 是C++标准第一个正式版本,现在阶段C++还在不断更新中,是一门值得深入学习的编程语言。下面是我对C++初学的一些基本了解。命名空间:namespace对标识符的名称本地化一个命名空间就定义了一个新作用域编译器会合并命名空间相同的命名空间缺省参数(C语言不支持):声明或定义函数时为函数参数指定默认值半缺省参数 由右到左依次给出,不能间隔缺...原创 2019-03-27 19:54:29 · 77 阅读 · 0 评论 -
C++关联式容器(下)底层基础
哈希表unordered系列关联式容器 使用方式与红黑树型关联式容器相似,底层实现不同。查询效率高达O(logn),最差情况下比肩红黑树的查找效率。底层结构哈希:是一种不经过任何比较,直接从表中获取想要搜索的元素,通过某种函数(hashFunc)建立关键码与存储位置之间的联系。简单的哈希函数: &nbs...原创 2019-09-17 10:15:55 · 181 阅读 · 1 评论