首页
Pingciple
取消

13-C++标准库之动态内存

到目前为止,我们编写的程序所使用的对象都有着严格定义的生存期。 全局对象在程序启动时分配,在程序结束时销毁;对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时被销毁;局部static对象在第一次使用前分配,在程序结束时销毁。 C++支持动态分配对象,这一类对象的生存期与它们在哪里创建无关,只有当显式地被释放时,这些对象才会销毁。 动态对象地正确释放被证明是编程中极易出错...

12-C++标准库之泛型算法

标准库容器定义的操作集合惊人的小。标准库并未给每个容器添加大量功能,而是提供了一组算法,这些算法中的大多数都独立于任何特定容器。 这些算法是通用的(generic, 或称泛型的)。可用于不同类型的容器和不同类型的元素。 大多数算法都定义在头文件algorithm中。 标准库还在头文件numeric中定义了一组数值泛型算法。 通过一些查找元素匹配的案例我们可以明显看到,迭代器令算法不依...

11-C++标准库之关联容器

关联容器和顺序容器有着根本的不同:关联容器的元素是按关键字来保存和访问的。而与之相对的是,顺序容器中的元素是按照它们在容器中的位置来顺序保存和访问的。 关联容器支持高效的关键字查找和访问。两个主要的关联容器(associative-container)类型是map和set类型。 map类型:map中的元素是一些关键字-值key-value对:关键字key起到索引的作用,值value则表示...

10-C++标准库之顺序容器

容器的定义:一个容器就是一组特定类型对象的集合。 顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。 标准库还提供了三种容器适配器,分别为容器操作定义了不同的接口,来与容器类型适配。但,什么叫容器适配器?二次巩固后回答: 容器适配器是基于现有容器实现的封装,它们可以修改或扩展...

09-C++标准库之IO库

C++语言不直接处理输入输出,而是通过一族定义在标准库中的类型来处理IO.这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口等。还有一些类型允许内存IO,即,从string读取数据,向string写入数据。 IO库定义了读写内置类型值的操作。此外,一些类,如string, 通常也会定义类似的IO操作,来读写自己的对象。 我们曾经用过的很多IO库设施,列举一下...

特别介绍-vector与string

之所以将string与vector单独拉出来作为一部分,主要还是因为这俩标准库在刷题以及实际应用中出现的频率非常高,因此作为一个单独的笔记模块; vector容器 向量vector是一个封装了动态大小数组的顺序容器(还是习惯称呼为数组),跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。因为vector容纳着其他对象,所以它也常被称作...

08-类的进阶及运用

拷贝控制 之前学到,每个类都定义了一个新类型和在此类型对象上可执行的操作,而这部分,教会我们: 类可以定义构造函数,用来控制创建此类型对象时做什么; 类如何控制该类型对象拷贝、赋值、移动或销毁时的行为; 一个类定义五种特殊的成员函数来控制这些操作: 拷贝构造函数(copy constructor):用同类型的另一个对象初始化本对象做什么。 拷贝赋值运算符(copy-...

07-类的基础及运用

类及其成员 类的定义 用户自定义的数据类型,增强类型抽象化的层次,数据抽象是一种依赖于接口(interface)和实现(implementation)分离的编程(以及设计)技术。 在抽象数据类型(abstract data type)中,由类的设计者负责考虑类的实现过程,使用该类的程序员只需要抽象地思考类型做了什么。 默认情况下,拷贝类的对象其实拷贝的是对象的数据成员。 class...

06-函数的全面介绍

函数引用的返回值 函数返回注意事项 最核心的一点:对于函数引用而言,不要返回局部对象的引用或指针。 函数完成后,它所占用的存储空间也随之被释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的内存区域: // 返回的是const string的引用类型 const string &manip() { string ret; // 以某种方式改变一下ret的...

05-引用的介绍

C++的引用 引用的介绍 引用在C++当中也算一种新的数据类型,但引用本身并不是一个对象,因此无法定义引用的引用,且引用的初始值必须是一个对象; 引用相当于是将引用与初始值绑定在一起,因此引用必须要求初始化; 以代码展示如下图: char c; // 一个字符类型 char *p = &c; // 指向字符类型的指针 char &r = c; // 对指针...