C++ 头文件系列(ostream)】的更多相关文章

1. 简介 头文件ostream主要定义了一个输出流类模版basic_ostream,该模版继承自basic_ios模版. 2. basic_ostream模版 2.1 sentry类 与basic_istream模版一样,basic_ostream也定义了一个sentry类,详见basic_istream::sentry. 2.2 流定位函数 seekp : 定位到指定位置. tellp : 返回当前位置. 2.3 格式化输出函数 operator <<(成员函数) : 输出变量,包括boo…
简介 该头文件围绕迭代器展开,定义了一系列与迭代器有关的概念,但最最最重要的一点就是----它和其它容器一起实现了C++容器的Iterator设计模式. Iterators are a generalization of pointers that allow a C++ program to work with different data structures(containers) in a uniform manner. 上述文字摘自C++14标准草案,简而言之,迭代器就是对指针的一层封…
1. 简介 这个头文件非常特殊,它只声明了8个常用流对象. 2. 8个对象 2.1 窄字符对象(char) extern istream cin extern ostream cout extern ostream cerr extern ostream clog 2.2 宽字符对象(wchar_t) extern wistream wcin extern wostream wcout extern wostream wcerr extern wostream wclog 3 标准 -- 具体实…
注意,该头文件仅在C++11中标准才开始出现. 简介 与语言内置的数组一样, array类模版支持几乎所有内置数组包含的特性: 顺序的(sequence) 内存连续的(contiguous storage) 固定大小的(fixed-size) 那既然与内置数组一样,为什么还要定义这样一个模版呢?C++委员会是想造轮子吗(-_-)?当然不是! 为什么需要array? array模版类实际上是内置数组的聚合,外加一层封装.正是由于这层接口,才使得数组能与STL接轨,真正成为一个container.…
简介 这个头文件定义了两个跟队列有关的类----quque.priority_queue,分别实现的是队列 和 优先队列这两个概念. 但是与这两个类模版与其它类模版(vector.array等)最大的不同是,它们是 容器适配器. 容器适配器 顾名思义,容器适配器是对容器的适配,从代码层面来讲,它就是对容器的再封装. 因此,这些容器适配器实际上都是由其他容器的功能实现的. 不难看出, 容器适配器所具有的功能是内部容器功能的子集. 普通的类封装一般是为了封装成特定问题领域下的类,提供特定的接口,以解…
简介 该头文件只含有一个类模版stack, 它实现栈的概念,是一个容器适配器(说实话,在写这篇随笔之前我都不知道有这么个类模版). 栈 栈只有一个重要的特性: LIFO(last-in first-out): 后入栈的元素先出栈. 栈有两个典型的操作----入栈和出栈,一般来说我们认为这两个操作都发生在栈的顶端(top). 操作对应的函数 入栈 -> push 出栈 -> pop (没错,这个头文件的内容确实少)…
简介 vector头文件包含vector的类模版以及该模版的显示特化版本vector< bool >. vector是C++容器库中非常通用的一种容器,如果你不知道该决定使用哪一种容器,或者没有足够的理由使用其它容器,那么就用它,没错的! 从整体上来看,vector就像是一种动态数组,它拥有数组的所有功能并且能够动态增长. 它主要有以下性质: 序列性容器 动态增长 可定制的内存分配策略 内存分配器 如果在一些特殊的应用场景中,默认的内存分配策略拉低了运行效率,这时候自定义的内存分配其就会站出来…
简介 该头文件包含两个概念相似的容器----map.multimap. 而这两个容器反映的概念就是 映射. 这两个容器 相同 的属性有: 关联性 映射 动态增长 键(Key)唯一性 这两个不相同的属性是: 映射关系 容器类别 既然说到关联性容器,自然得说说标准库的容器类别. C++库容器主要能分成以下几类: 序列性容器: 将存储对象组织成线性模型,使用户能够像线性数组那样存取. 关联性容器: 将存储内容以键(Key)相关联 ,通过键来存取内容. 乱序容器: 存储对象以乱序存储,不具有顺序. 容器…
简介 很明显,这两个头文件分别是map.set头文件对应的unordered版本. 所以它们有一个重要的性质就是: 乱序 如何乱序 这个unorder暗示着,这两个头文件中类的底层实现----Hash. 也是因为如此,你才可以在声明这些unordered模版类的时候,传入一个自定义的哈希函数,准确的说是哈希函数子(hash function object). 具有相同相同哈希值的元素被放在同一个桶(bucket)中. 为何乱序 在提供映射.集合功能的情况下,侧重于元素的快速获取. 用树结构(红黑…
简介 algorithm头文件是C++的标准算法库,它主要应用在容器上. 因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性. 因此,任何数据结构都能使用这套算法库,只要它具有相应的迭代器类型. 算法类别 如上图所示,库中的算法主要分为4类: 非修改性顺序操作(Non-modifying sequence operations) 可变顺序操作(Mutating sequence operations) 排序和关系操作(Sorting…