C++
文章平均质量分 84
m0_52012656
这个作者很懒,什么都没留下…
展开
-
map、set的使用
概念:首先我们要知道map/set是什么?它们是STL库中的关联容器,在STL库中有八个关联容器,分别是map、set、multimap、multiset、unordered_map、unordered_set、unordered_multimap、unordered_multiset。不同体现在三个方面: 一个是set、或者是map。 允许重复key,或者不允许。 按顺序保存,或者不允许。 关联式容器是什么? 关联式容器也是用来存储数据的,与序列式容器不同原创 2022-05-15 18:37:38 · 354 阅读 · 0 评论 -
搜索二叉树详解
定义搜索二叉树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:1、若任意节点的左子树不空,则左子树上的所有节点的值均小于它的根节点的值2、若任意节点的右子树不空,则右子树上的所有节点的值均大于它的根节点的值3、任意节点的左右子树也称为二叉查找树。4、没有键值相等的节点。5、搜索二叉树中序遍历为有序数组。结构代码实现template<class K>struct BSTreeNode{ BSTreeNode<K>*原创 2022-04-14 16:10:21 · 978 阅读 · 3 评论 -
C++多态详解
c++多态多态的概念概念:通俗的来说就是多种形态,具体就是去完成某个行为,当不同类型的对象去完成同一件事时,产生的动作是不一样的,结果也是不一样的。举一个现实中的例子:买票这个行为,当普通人买票时是全价;学生是半价;军人是不需要排队。多态也分为两种: 静态的多态:函数调用 动态的多态:父类指针或引用调用重写虚函数。 这里的静态是指在编译时实现多态的,而动态是在运行时完成的。多态的定义及实现构成条件多态一定是建立在继承上的,那么除了继承还要两个条件: 必须原创 2022-04-13 14:03:39 · 1228 阅读 · 5 评论 -
继承详解(虚继承实现原理)
继承的概念及定义概念: 继承机制是面向对象程序设计为了提高代码复用率的一种手段,它可以保持原类特性的基础上进行拓展,简单来说继承是类层次的复用。接下来我们来看一个简单的继承class Person{public: void Print() { cout<<"name:"<<_name<<endl; cout<<"age:"<<_age<<endl; }pr...原创 2022-04-01 22:18:59 · 1850 阅读 · 9 评论 -
模板进一步探究
非类型模板参数模板参数分类类型形参与非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。注意: 浮点数,类对象以及字符串是不允许作为非类型模板的。 非类型的模板参数必须在编译期就能确认结果。 模板特化有时候,编译默认函数模板或者类模板不能正确处理需要逻辑,需要针对一些情况特殊化处理,就要做模板特化。通常情况下,使用原创 2022-03-30 09:47:53 · 131 阅读 · 8 评论 -
stack与queue模拟实现
stack与queue的模拟实现容器适配器适配器是一种设计模式(设计模式是一套反复使用的、大部分人知道的代码设计经验的总结),该模式试讲一个类的接口转化为用户希望的另一个接口,虽然stack与queue中也可以存放元素,但在STL中并没有将其划分为容器,而是成为容器适配器,这是因为stack与队列只是堆其他容器进行了包装,STL中的stack和queue是使用双端队列进行封装的。双端队列概念它是一种双开口的连续空间数据结构(与队列没有关系),双开口的含义是可以再两端进行插入删除操作,且时原创 2022-03-29 16:01:02 · 1234 阅读 · 8 评论 -
List迭代器模拟
List迭代器模拟概念: 迭代器是一种抽象的设计概念,其定义为:提供一种方法,使他能够按顺序遍历某个聚合体(容器)所包含的所有元素,但又不需要暴露该容器的内部表现方式。 迭代器是一种行为类似智能指针的对象, 而指针最常见的行为就是内 容提领和成员 访问。 因此迭代器最重要的行为就是对operator*和operator->进行重载。 STL的中心思想在于: 将数据容器和算法分开, 彼此独立设计, 最后再以一贴胶合剂( iterator) 将它们撮合在一起。STL的迭代器是原创 2022-03-14 14:59:45 · 1817 阅读 · 10 评论 -
模拟实现my_string
源码:#pragma once#include<iostream>#include<cassert>#include<string>namespace ztl{ using namespace std; class string { friend ostream& operator<<(ostream& _cout, const ztl::string& s); ..原创 2022-03-01 15:13:44 · 89 阅读 · 5 评论 -
string的简单使用
STL库中的string类 字符串是表示字符序列的类 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。 string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。 string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allo原创 2022-02-28 10:44:32 · 799 阅读 · 4 评论 -
C++模板初阶
模板初阶模板初阶从三个方面来进行了解:1、泛型编程2、函数模板3、类模板泛型编程要是使用函数重载来实现对不同数据类型的操作有以下几个方面的问题:1、代码复用率低,出现新的类型的话还要再针对新类型再实现一个相同功能的函数。2、代码可维护性低,一个出错,就可能导致所有函数重载出错·。因此泛型编程应运而生。定义:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。而在C++中使用模板来实现泛型编程。模板模板分为函数模板和类模板。函数模板原创 2022-02-19 21:02:50 · 262 阅读 · 0 评论 -
C&C++内存管理
内存分布1、主要段及其分布 每个程序运行起来以后,它将拥有自己独立的虚拟地址空间。这个虚拟地址空间的大小与操作系统的位数有关系。32位硬件平台的虚拟地址空间的地址可以从0~2^32-1,即0x00000000~0xFFFFFFFF,总共4GB大小。64位硬件平台的虚拟地址空间则会很大。C/C++程序在虚拟内存中的排布大概如下所示(仅仅列出了相关的主要段):如上图所示:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。原创 2022-02-19 20:57:00 · 426 阅读 · 0 评论 -
类与对象(下)
类与对象再谈构造函数1、构造函数赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;...原创 2022-01-20 20:07:39 · 67 阅读 · 0 评论 -
类与对象(中)
类与对象(中)概述六个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。构造函数概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时编译器会自动调用,用来初始化类的成员变量,每个对象在生命周期内只会调用一次。 构造函数是完成对象的初始化的,与Init函数做相同的工作,但是Init函数需要自主调用,而构造函数不用,避免了忘记调用Init函数而造成对象随机值的情况。原创 2022-01-19 13:34:11 · 51 阅读 · 0 评论 -
C++入门
C++关键字C++总计63个关键字,C++兼容C语言大多数特性关键字在这块不做详细解释仅做了解命名空间命名空间定义为什么存在:解决C语言中的命名冲突的问题(C语言没有办法很好的解决这个问题)1、我们自己定义的变量,函数可能与库里面重名冲突2、做一些大型项目,多人协作的话,可能会有相同的命名。命名空间的概念:在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,原创 2022-01-15 10:53:31 · 58 阅读 · 0 评论 -
C++类与对象1
1、面向过程与面向对象初步认识 C语言是面向过程的,关注的是过程,分析求解问题的步骤,通过函数逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分为不同的对象,靠对象之间的交互完成 因为C++兼容C所以C++是面向过程和面向对象混编的类引入:在C语言中没有类这个概念,主要是结构体(struct)而在C++中引入了类这个概念,而类是结构体拓展而来的,在C中结构体只能定义变量,而在C++中不仅可以定义变量还可以定义函数。关键字:class(推荐使用)、struct原创 2022-01-15 10:45:33 · 50 阅读 · 0 评论