C++
文章平均质量分 91
wht6587
做自己内心的主人
展开
-
C++--map和set
1. set是按照一定次序存储元素的容器2.在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改元素总是const),但是可以从容器中插入或删除它们。3.在内部,set中的元素总是按照其内部比较对象类型比较所指示的特定严格弱排序准则进行排序。4. set容器通过key访问单个元素的速度通常比容器慢,但它们允许根据顺序对子集进行直接迭代。5. set。原创 2024-08-19 12:14:49 · 792 阅读 · 0 评论 -
C++--二叉搜索树
问题:如果退化成单支树,二叉搜索树的性能就失去了。个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二。a、从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。在二叉搜索树中检索该单词是否存在,存在则拼写正确,不存在则拼写错误。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。b、最多查找高度次,走到到空,还没找到,这个值不存在。叉搜索树的深度的函数,即结点越深,则比较次数越多。,统计成功后,给定单词就可快速找到其出现的次数,原创 2024-08-19 11:51:16 · 648 阅读 · 0 评论 -
C++--多态
1.多态概念多态的概念:通俗来说,就是多种形态,。2.多态的定义以及实现2.1虚函数虚函数:即被virtual修饰的类成员函数称为虚函数。2.2在继承中要1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写2.3虚函数的重写虚函数的重写覆盖,称子类的虚函数重写了基类的虚函数。1.派生类重写基类虚函数时,与基类虚函数返回值类型不同。即基类虚函数返回基类对象的指针或者引用,派生类虚函数返回派生类对象的指针或者引用时,称为协变。原创 2024-07-09 20:08:13 · 300 阅读 · 0 评论 -
C++--继承(下)
无论派生出多少个子类,都只有一个static成员实例。原创 2024-07-09 10:43:25 · 463 阅读 · 0 评论 -
C++--继承(上)
1.1概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。1.2定义1.2.1格式。原创 2024-06-09 21:06:48 · 1021 阅读 · 0 评论 -
C++--模版进阶
模版参数不止类型,还有常量参数(浮点数、类对象以及字符串是不允许作为非类型模板参数的,)C++20支持double等内置类型,非类型的模板参数必须在编译期就能确认结果。我们知道写个比较大小的模版函数,一般人都是传对应类型的值,但是总有一些二般人传入的值比较奇怪如传入对应类型值的地址,所以我们就需要对模版进行特殊处理。一般情况下如果函数模板遇到不能处理或者处理有误的类型,为了实现简单通常都是将该函数直接给出。4. 函数形参表: 必须要和模板函数的基础参数类型完全相同,如果不同编译器可能会报一些奇怪的错误。原创 2024-06-07 10:23:22 · 905 阅读 · 0 评论 -
C++--stack和queue
但是,deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其是否移动到 某段小空间的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看到的一个应用就是,STL用其作 为stack和queue的底层数据结构。与vector比较,deque的优势是:头部插入和删除时,不需要搬移元素,效率特别高,而且在扩容时,也不需要搬移大量的元素,因此其效率是必vector高的。原创 2024-06-06 20:50:03 · 589 阅读 · 0 评论 -
C++--list
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与非常相似:最主要的不同在于是单链表,只能朝前迭代,已让其更简单高效。4.与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。5.与其他序列式容器相比,list和。原创 2024-05-31 09:48:51 · 975 阅读 · 0 评论 -
C++模版初阶&STL简介
class 类模板名// 类内成员定义标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2024-05-21 17:19:43 · 883 阅读 · 1 评论 -
C&C++内存管理
在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。• new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造• delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间• new T[N]的原理。原创 2024-05-05 15:39:27 · 1329 阅读 · 0 评论 -
C++--vector
1. vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.与其它动态序列容器相比(),vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起list和forward_list统一的迭代器和引用更好。原创 2024-05-30 14:20:31 · 1100 阅读 · 0 评论 -
C++--string
c语言中虽然也有字符串,但是其与对应的函数是分离的,不符合c++中面向对象的思想。而且c++中的string类使用起来更方便、快捷。1. string是表示字符串的字符串类2.该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。原创 2024-05-29 15:32:31 · 1136 阅读 · 0 评论 -
C++类与对象(下)
比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接 访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。内部类是一个独立的类, 它不属于外部类,更不能通过外部类的对象去访问内部类的成员。内部类天生就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访 问外部类中的所有成员。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。原创 2024-05-02 12:33:49 · 875 阅读 · 1 评论 -
C++类与对象(中)
上一章介绍到类中的成员函数第一个参数默认是this指针,这章将对类中的成员函数作详细介绍。原创 2024-04-28 12:06:45 · 1230 阅读 · 3 评论 -
C++类与对象(上)
C++更为主流的写法是使用class关键字来定义类//class后加类名//类体//类中的方法叫作成员方法//类中的变量叫作成员变量int age;类中的成员方法有两种声明定义方式:1.声明定义分离,假如类在.h中,且方法在类中只进行了声明,方法的定义在.cpp中,则.cpp除了需要包含.h之外,还需要在方法名前加上:(类会产生类域)。2.声明定义都在类中,编译器可能会把其当成内联函数。原创 2024-04-21 16:44:35 · 904 阅读 · 2 评论 -
C++入门基础(2)【函数重载、引用、内联函数、auto、范围for、nullptr】
在C++中,汇编指令里的函数名不仅仅只有函数名,还使用了函数的参数进行修饰,使用了参数进行修饰的函数名更加复杂,但也使得C++能支持函数重载。引用类型的变量不会创建一个新的变量,而是为另一个变量取一个别名,从语法层面上看,引用不会开空间,引用类型的变量和被引用的变量占用同一块空间。当引用作为函数的参数时,能起到类似指针的效果,若给一个函数传入大量参数,值传参需要浪费大量空间,引用则只需要取别名;同一作用域中同名的函数,且这些同名函数的参数个数不同或参数类型不同或参数顺序不同。原创 2024-04-20 17:59:02 · 747 阅读 · 1 评论 -
C++入门基础(1)【命名空间、输入输出、缺省函数】
当我们想定义一个命名空间时,需要使用namespace关键字。//namespace后加命名空间的名字,然后加一对{}即为命名空间//命名空间中可以定义类型、变量、函数int i;原创 2024-04-15 14:36:40 · 759 阅读 · 1 评论