C++标准程序库笔记之一】的更多相关文章

本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. -------------------------------------------------------------------------------------------- 2. C++及其标准程序库简介 2.2-1 注意:如果要把一个template中的某个标识符号指定为一种型别,就算意图显而易见,关键字typename也不可或缺,因此C++的一般规则是,除了以typename修饰之外,template内的任…
<C++标准程序库>笔记之二 本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. -------------------------------------------------------------------------------------------- 6. STL 容器 6.1-1 本节讲述STL容器的共通能力.其中大部分都是必要条件,所有STL容器都必须满足那些条件.三个最最核心的能力是: (1)所有容器提供的都是“value语意”而非“ref…
本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. -------------------------------------------------------------------------------------------- 13 以Stream Classes 完成输入和输出 13.1 String对象 (1)C++ I/O 由streams完成.所谓stream就是一条数据“流”.输出操作被解读为“数据流入stream”,输入操作则是“数据流出stream”…
本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. -------------------------------------------------------------------------------------------- 11 Strings 字符串 本章单独列出,讲述C++标准程序库中的string(字符串)型别,包括针对基本template class basic_string<>及其标准特化型别string和wstring的详细内容. C+…
抱着本厚厚的<C++标准库>读了几天,想想也该写点关于用法的总结,一来怕今后容易忘记,二来将书上的事例重新敲一遍,巩固对程序库相关知识的了解.今天开第一篇,以后不固定更新.当然,笔者所读为该书为基于C++98的第一版,已有一定的年代感,不过虽然C++11的推出已有一定的时日,但是在普及上还需要一定的时间,因而,这本中文译本还是有一定的可读性的.这本书更新的版本为英文第二版,很遗憾还未出现其中文译本. 由于是开篇,本文所讲都很基础,但这些基础内容对后面的学习是非常重要的. 1  C++标准 C+…
0. 内容为个人学习笔记, 仅供参考, 如有错漏, 欢迎指正! 1. STL中的所有组件都是由模板构成的, 所以其元素可以是任意型别的. 组件有: - 容器: 管理某类对象的集合. 不同的容器有各自的优缺点. - 迭代器: 用来在一个对象集群(Collection of Objects) 的元素上进行遍历. 这个CoB可以是容器/容器的一部分. 每种容器都提供了自己的迭代器. - 算法(Algorithm): 用来处理集群内的元素(比如: 查询,修改,排序等). - 适配器(adapter) -…
本章重点是介绍与C++标准程序库相关的几个最重要的语言新特性 template(模板) 程序库中几乎所有东西都被设计成template形式.所谓templates,是针对“一个或多个尚未明确的型别”所撰写的函数或类别. 下面是一个典型例子 template<class T> inline const T& max(const T& a,const T& b) { return a < b ? b : a; { template并非一次编译便产生出社和所有型别的代码…
1.Pairs(对组) (1)class pair可以将两个值视为一个单元.任何函数需返回两个值,也需要pair. (2)便捷地创建pair对象可以使用make_pair函数 std::make_pair(32,'@') 等价于 std::pair(int,char)(42,'@') 2.Class auto_ptr (1)auto_ptr是一种指针:它是"它所指向的对象"的拥有者(owner).所以,当身为对象拥有者的auto_ptr被摧毁时,该对象也将遭到摧毁.auto_ptr要求…
1.基本类型的显式初始化 如果采用不含参数.明确的constructor(构造函数)调用语法,基本型别会被初始化为零: int i1; //undefined value int i2 = int(); //initialized with zero 这个特性可以确保我们在撰写template程序代码时,任何型别都有一个确切的初值.例如下面这个函数中,x保证被初始化为零. template <class T> void f() { T x = T(); }…
STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用erase的区间形式(参见条款5).因为remove本身很方便地返回了区间新逻辑终点的迭代器,这个调用很直截了当: vector<int> v;                        // 正如从前v.erase(remove(v.begin(), v.end(), 99), v.end(…