C++
文章平均质量分 87
C++知识点
An_Mo
这个作者很懒,什么都没留下…
展开
-
Vector
一、vector介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时原创 2021-11-04 15:43:00 · 486 阅读 · 0 评论 -
C++之模板初阶
一、泛型编程泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础模板:告诉编译器一个模子,让编译器根据不同类型利用该模子生成代码模板分为:函数模板和类模板二、 函数模板1、函数模板概念函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。2、函数模板格式template<typename T1, typename T2,…,typename Tn>返回值类型 函数名(参数列表){}templ原创 2021-09-23 14:27:54 · 236 阅读 · 1 评论 -
C++内存管理
一、C/C++内存分布栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。堆用于程序运行时动态内存分配,堆是可以向上增长的。数据段–存储全局数据和静态数据。代码段–可执行的代码/只读常量。二、C语言中动态内存管理方式:1、malloc/calloc/realloc区别:共同点:都是C语言中用来进行动态内存申请的库函数,申请的空间都在堆上,用完之后必须使用f原创 2021-09-22 22:19:15 · 192 阅读 · 1 评论 -
C++入门
一、C++关键字(C99中C语言的关键字有32个,C++98中的C++关键字有63个)二、命名空间1、命名空间的目的:对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。(拓展知识:C语言的作用域有全局作用域和局部作用域两种;C++中的作用域有全局作用域、局部作用域和命名空间三种)2、命名空间定义定义命名空间,需要使用到namespa...原创 2019-07-24 16:38:09 · 159 阅读 · 0 评论 -
C++总结(三)
一、C++中动态内存管理:1、C/C++程序运行时:内存分布情况a、 栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。b、内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共 享内存,做进程间通信。(Linux课程如果没学到这块,现在只需要了解一下)c、. 堆用于程序运行时动态内存分配,堆是可以上增长的。d、数据段–存储全局数据...原创 2020-02-12 21:37:09 · 523 阅读 · 0 评论 -
C++总结(二)
一、this指针1、概念:类非静态成员函数的第一个隐藏的参数,该参数使用指向调用当前函数的对象2、特性:this指针类型:T* const普通类型成员函数:T* const 可以修改对象的内容,可以调用普通和const类型的成员函数const类型成员函数:const T* const:this指向不能修改并且指向对象中的内容也不能修改,只能调用const类型的成员函数this...原创 2020-02-11 20:05:13 · 176 阅读 · 0 评论 -
C++总结(一)
一、C++入门1、C++中关键字----C++98-----63个关键字2、命名空间什么是命名空间:一个作用域 一个部门----->一个公司命名空间的作用:防止命名冲突如何定义一个命名空间:namespace N1{变量、函数}命名空间中的成员如何使用a、N1::成员名字b、using N1::b;c、using namespace N1;二、缺省参数1、概念...原创 2020-02-10 19:09:57 · 1589 阅读 · 3 评论 -
红黑树模拟实现STL中的map与set
红黑树的迭代器增加迭代器分为三步:定义一个类,封装一个指针1、构造2、就有指针的类似行为:operator*()、operator->()3、能够移动:前置++、后置++、前置–、后置–4、能够比较 :!=、==在容器类中给迭代器类型取别名在容器中增加begin()、end()#include<iostream>using namespace ...原创 2019-11-25 18:44:25 · 228 阅读 · 1 评论 -
树形结构关联式容器的底层结构
四、底层结构树形结构的关联式容器map/set/multimap/multiset的共同点是:其底层结构都是按照二叉搜索树来实现的。一、什么是二叉搜索树?二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一颗空树,或者具有以下性质的二叉树:1)若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2)若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3)它的左右子树也...原创 2019-11-16 16:03:34 · 282 阅读 · 0 评论 -
树形结构的关联式容器
一、关联式容器关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率更高。二、键值对用来表示具有一一对应关系的一种结构,该结构中一般只包括两个成员变量key和value,key代表键值,value表示与key对应的信息。键值对的定义:template<class T1,class T2>...原创 2019-11-16 16:01:54 · 307 阅读 · 0 评论 -
智能指针的使用及原理
智能指针:管理资源,自动去释放资源RAIIRAII是一种利用对象生命周期来控制程序资源(如内存、文件局柄、网络连接,互斥量)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。我们实际是把管理一份资源的责任托管给了一个对象。这样做有两大好处:1)不需要显示的释放资源2)采用这种方式,对象所需的资源在其生命期内始终保持有...原创 2019-10-18 19:02:52 · 2053 阅读 · 0 评论 -
异常
一、C++异常的概念概念:首先既然有异常,那就肯定就正常。正常的含义是程序运行可以正确运行,并且能够得到预期的结果。那异常就是指程序无法进行,程序无法得到预期的结果。程序消亡的三种方式:1)程序正常结束----main---->return 02)自己将自己结束(自杀)例如:if(b==0) {exit(0);}3)被其他程序结束(被别人给杀死)例如:任务管理器...原创 2019-10-15 20:43:22 · 236 阅读 · 0 评论 -
C++继承
一、继承的概念及定义继承的概念继承机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。 class Person{public: void print() { cout &l...原创 2019-10-05 17:04:23 · 118 阅读 · 0 评论 -
多态
一、多态的概念1、概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个列子:比如说买票这个行为,当普通人买票时,是全价票;学生买票时,是半价买票;军人买票时是优先买票。...原创 2019-10-03 14:07:48 · 125 阅读 · 0 评论 -
string类
一、标准库中的string类1、 string类(了解)字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信 息,请参阅basic_string)。string类是basic_str...原创 2019-08-07 17:58:01 · 220 阅读 · 0 评论 -
类和对象(3)
一、再谈构造函数构造函数体赋值class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;};虽然上述构造函数调用之后,对象中已...原创 2019-07-29 16:43:08 · 162 阅读 · 0 评论 -
类和对象(2)
一、 类的6个默认成员函数如果一个类中什么成员都没有,简称空类。空类并不是什么都没有任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。6个默认成员函数:初始化和清理1、构造函数主要完成初始化工作2、析构函数主要完成清理工作拷贝复制1、拷贝构造是使同类对象初始化创建对象2、复制重载主要是把一个对象赋值给另一个对象取地址重载主要是普通对象和const对象取地址,这两...原创 2019-07-27 17:10:32 · 151 阅读 · 0 评论 -
类和对象(1)
一、类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成。二、类的引入C语言结构体中不能包含函数C++结构体中可以放函数,可以直接用结构体名字定义结构体对象struct Student{ void SetStudent(const char...原创 2019-07-26 16:47:02 · 236 阅读 · 0 评论 -
C++总结(四)
一、多态1.多态的概念多态:同一个事物,在不同场景下表现出的不同的状态2.多态的分类静态多态(早绑定,静态联编): 在编译期间,根据所传递的实参类型或者实例化的类型,来确定到底应该调用那个函数即:在编译期间确定了函数的行为—函数重载、模板动态多态(晚绑定,动态联编):在程序运行时,确定具体应该调用那个函数3.动态多态的实现条件-- -在继承的体系中虚函数&重写:基类中必...原创 2020-02-14 18:12:11 · 443 阅读 · 0 评论