C++STL详解(九)map和set的使用 在我们之前介绍二叉搜索树时,我们大家可以发现其的模板参数只用了一个T1,而我们的set的底层就是一种特殊的二叉树,我们可以将其理解为只有一个实值value的特殊模型。下图为cpp库中set的定义:参数1:T即是set的实值参数2:compare是中序遍历结果的排列,默认是升序参数3:空间配置器下面,我们来学习以下set的定义方式:方式1:构造一个空的容器方式2:拷贝构造方式3:迭代器区间构造方式4:构造空容器,并指定比较方式map。
一篇文章讲透数据结构之二叉搜索树 二叉搜索树(Binary Search Tree)是基于二叉树的一种升级版本,因为普通的二叉树没有实际应用的价值,无法进行插入、删除等操作,所以我们进行了升级,升级成了二叉搜索树。左节点比根节点小,右节点比根节点大。下面我们展示一下;//函数定义返回类型 函数名(参数1,参数2,......)//函数体return a+b;在上面的这个例子中,我们定义了一个add函数,他接受的两个值是整型的,并返回了他们的和,因此,我们可以使用这个函数计算两数之和。
C语言初始:数据类型和变量 人有黄人白人黑人,那么数据呢?我们大家可以看出谁是黄种人,谁是白种人,谁是黑种人,这是因为他们是类似的。数据也是有类型的,就譬如整数类型,字符类型,浮点型类型。每种类型也都是能够抽象出共同特征的,编译器也是只有知道了数据的类型才能操作数据。我们在本文中将学习整数类型,字符类型,浮点型类型,布尔型。在C语言中,数据类型决定了变量在内存中存储的方式以及可以进行的操作。本文将简要介绍C语言中常见的数据类型,包括字符型、整型、浮点型和布尔类型,并在示例中详细解释其使用原因。
C++STL详解(八)priority_queue的运用与实现 优先级队列也是队列,符合队列先进先出的原则。但顾名思义,它是具有优先级的一种队列。也就是说,优先级高的元素会在前面,优先级低的元素会在后面。说到这里,大家应该能够联想到一种名为堆的数据结构。其实,优先级队列的底层就是用堆来实现的。泛型编程。堆的实现。
oi!小鬼!准备好接受模板的力量了吗? 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性3. 模板会导致代码膨胀问题,也会导致编译时间变长4. 出现模板编译错误时,错误信息非常凌乱,不易定位错误模板是一把双刃剑,用好了,它将会是一把锐利的武器,用的不好,它将成为压倒你的大山。
C++面向对象:继承! /子类:继承方式 父类 //eg:class a :public b 代表了a以public的方式继承了b。在我们上述的例子中ps:继承符是可以省略的,省略继承符时使用class时,默认继承方式为public继承。使用struct时,默认继承方式为private继承。
多态对象的内存结构 这篇文章我们通过具体的案例来谈一谈多态的具体内存结构:class Base{public: virtual void Func1() { cout << "Func1()" << endl; } virtual void Func2() { cout << "Func2()" << endl; } void Func3() { cout << "Func3()" << endl; }privat
C++面向对象:多态! 实现多态需要借助虚表(虚表数表),构成虚表需要虚函数(virtual修饰的函数)。除此之外,我们还需要虚表指针定位函数,并调用。抽象类即有纯虚函数的类。那么,什么是纯虚函数呢?我们只需要在虚函数的函数头之后加一个=0,即可将虚函数变为纯虚函数。纯虚函数也可以与普通虚函数构成重写,也就是能够实现多态。但是,包含纯虚函数的类是不可以实例化对象的,这点我们后续会谈到。因此,只要类中含有纯虚函数,那么这个类就是一个抽象类。cout
C++STL详解(七)——Stack和Queue 第一个构造函数:使用默认的适配器定义栈第二个构造函数:使用特定的适配器定义栈如果没有为stack指定特定的底层容器的话,默认情况使用deque(双端队列)。使用默认的适配器定义队列。使用特定的适配器定义队列。如果没有为stack指定特定的底层容器的话,默认情况使用deque(双端队列)。
C++STL详解(五)——list类的接口详解 list容器的底层是双向循环带头链表,在CPP中,我们对双向循环带头链表进行了一定程度的封装。双向链表在这里我们要学习六种list的构造方式。构造1:构造一个某类型容器构造2:构造一个含有一个值的某类型容器//构造只含有一个数值3的结点的list容器构造3:构造一个含有n个值的某类型容器//构造含有三个数值都是5的结点的list容器构造4:复制某个容器构造该容器的复制品//拷贝构造构造5:使用某个迭代器区间进行构造//迭代器区间初始化构造6:使用列表构造一个某类型容器//使用列表构造。
C++STL详解(一)——string类的接口详解(下) 在这里需要大家注意的是,capacity表示开辟的空间大小,而size求出的是开辟的空间内的元素个数。在用>>进行输入操作时,当>>读取到空格便会停止读取,基于此,我们将不能用>>将一串含有空格的字符串读入到string对象中。另外,值得一提的是,如果resize给出的值大于capacity的值的话,会调用扩容函数。但是,我们发现了一个问题,如果我们输入的字符串中有空格的话 则空格后的字符会进入缓冲区。string元素的访问有两种方式,我们可以通过重载的[]访问,也可以通过at函数访问。
C++STL详解(一)——String接口详解(上)!!! string类是CPP中STL中处理字符串的一个类,它给我们提供了丰富的接口以供于我们使用。虽然我们传统的C库中有相关的函数以供于我们使用,但是由于操作起来比较麻烦,因此CPP中实现了string类。string类所在的头文件为
CPP入门:日期类的构建 这里需要注意的是,由于这个函数运行结束之后,tmp会先被销毁掉,再进行返回,因此我们如果返回值为引用的话,则会出错。之后我们一直减去当月的天数,并让月份加1,如果月份为13,则年份加1,月份赋为1。在日期类中,我们应当是已知每个月份有多少天的,因此我们还需要在日期内中写一个成员函数来获得当月的天数。后置++是先使用后++的。此外,我们的日期类还应当能够实现对日期的打印、对日期类的相关计算、输入输出的重载等成员函数。与实现加等类似的是,这里我们也是类似的步骤,通过一个循环来不断的更新年月日。