《C++标准程序库》重难点分析(一)~(五)章

(一)关于本书

1、一些简介。C++最强大之处在于泛型编程,OO只是一个亮点。要做OOP请去Java\C#。

(二)标准库介绍

1、C++的特性,很多书都有介绍,略看

2、算法复杂度,请看《算法导论》

(三)一般概念

1、重点是明白异常处理的重要性,这是为什么要用标准库的一大原因。

(四)通用工具

1、Pairs(对组)是很简单的东西,可以自己做一个。以后的重点是Tuple(元组),可以关注一下boost::tuple。

2、auto_ptr可以不看,这个很难用。重点是了解引用计数。请关注std::tr1::shared_ptr或者boost::shared_ptr。这些特性在C++11中均内置为标准。

3、数值极限,可以帮助了解跨平台的基本数据类型。例如求int的最大:#include <limits>  int intMax =  std::numeric_limits<int>::max();

4、辅助函数,基本上用的很多。注意min、max和swap的用法。

(五)STL简介

1、基本上是大概。如果想速成的话直接看这一章就够了。

2、容器掌握:

类型

分类

特征

用处

vector

序列容器

可变长的数组,内存是连续的。只能在尾部添加元素。内部元素改动消耗很大

如果没有特殊考虑,直接就用vector。不适合大数据,大数据请用数组,然后封装

list

序列容器

双向链表,内部元素改动容易,添加元素麻烦。

链表。适用于需要大量的修改、排序或者广义表的情况。

deque

序列容器

拥有vector的特性,同时可以在头部添加元素。内存不连续。内部元素修改很麻烦。

头尾增加元素的情况。

string

序列容器

封装好的字符串

如果不注重计算速度和程序体积,就用它,安全方便。

array

序列容器

对固定数组的封装

想用就用

set

关联容器

重复的元素只看做一个元素。内部用排序,速度慢。

查看有哪些元素比较方便。

map

关联容器

对数据对进行存储,类似python的词典

类似字典查询的地方

multiset

关联容器

允许多个重复元素

查询出现次数

multimap

关联容器

多个键值相同的元素

集合运算

stack

配接器

后进先出

堆栈

queue

配接器

先进先出

队列

Priority Queue

配接器

优先等级分布

贪心算法

3、迭代器是用来遍历容器的。详见第七章。主要掌握下面的重载操作:

a)        operate *

b)       operate ++

c)        operate == !=

d)       operate =

迭代器隶属

类型

注意

vector

随机

前后都可,随意变化位置

list

双向

前后,一次一步

deque

随机

同vector

set、multiset

双向

单步

map、multimap

双向

单步

4、算法。详细见第九章。采用半开区间,begin是包含,end不包含。

5、特殊迭代器,也称迭代器配接器。主要有:

a)    插入迭代器,如inserter

b)    流迭代器,如ostream_iterator

c)    逆向迭代器,如reverse_iterator

6、函数可以作为参数传入STL算法,类似于函数指针。充分说明了函数也可以成为对象。一般只能传入一元和二元操作函数。

7、仿函数,用结构体或者类,重载了operator()后的一类具有函数行为的对象。详见第八章。仿函数速度比函数快、能存储状态。STL在<functional>里已经定义了很多仿函数,而且都可以使用bind。

你可能感兴趣的:(《C++标准程序库》重难点分析(一)~(五)章)