对和谐社会的理解,STL理解

以下为这两天看C++ STANDARD LIBRARY的总结,都是以前不够清楚的地方:
c++标准库主要包括STL,iostream,string等。
STL包括:1.容器containers,2.迭代器iterators,3.算法algorithms,4.仿函数functors,5.适配器adapters
容器包括:
1.序列容器,有vector,deque,list。其中vector为动态数组,暂且猜测是用数组实现,每次内存不够就double之。deque猜测与vector类似,只是不光后面有空余位置,前面也有,任何一部分不够用的时候都需要重新分配内存。list就是链表,基于效率考虑不提供随机访问接口,也就不能用[]来取得容器内元素。
2.关联容器,有set,map,multiset,multimap。这类容器在插入值的时候,值的位置与插入顺序无关,而只与值本身有关,因为它们是时刻保持有序的,用二叉树实现(红黑树),后两者为前两者的允许有重复值出现的版本。
3.容器适配器,这其实属于adapters,不过也可以放在这里,所谓adapters,就是一层封装,比如容器适配器是在基础容器外封装一层得到一些提供特殊功能的容器,而迭代器适配器则是通过封装(待验证)得到一些有特殊功能的迭代器,这两种适配器分别满足容器接口和迭代器接口,因此都可以与algorithm配合使用。容器适配器有stack,queue,priority_queue。
迭代器包括:
1.bidirectional iterator双向迭代器,这种迭代器只提供operator++,operator--,不提供算术操作,也不提供operator<,因此只能使用it != l.end(),而不能使用it < l.end(),这也是为什么有的书上提倡使用前面那种判断方法的原因。list,set,multiset,map,multimap提供的迭代器均属此类。计算两个bidirectional iterator之间距离的时候需要借用辅助函数distance(),而对于下面的random access iterator只需要调用operator-就可以了。
2.random access iterator随机存取迭代器,这种迭代器下层可能是用指针实现的(待验证),因此提供算术操作(it+=3),提供operator<。
3.迭代器适配器,同样是adapters。包括
a)insert iterator(back_inserter-要求容器提供push_back()(vector,list,deque均提供),front_inserter-要求容器提供push_front()(list,deque均提供),inserter-要求容器提供insert()(vector,deque,list,set,map,multiset,multimap均提供,因此是唯一可用于关联容器的insert iterator,然而对于关联容器,由于其本身的有序性,因此这个inserter并不是指定插入位置,而是指定开始搜索插入位置的位置));
b)stream iterator,包括istream_iterator,ostream_iterator,可以在流上迭代。
c)reverse iterator,就是revers_iterator,每种容器都提供rbegin(),rend()函数与之配合使用,从而可以反向遍历容器。
算法包括:
TBC
仿函数是:
TBC
Tags:  自然语言理解 英语阅读理解题 理解英文 对哲学的理解 对和谐社会的理解

延伸阅读

最新评论

发表评论