一直在学习STL,用的书籍是王昕译的《C++ STL 中文版》,学习中产生很多问题,特在这向各位高手请教,以下问题基本是按教材章节顺序给出的,如果您手中也刚好有这样一本书,那就太好了,这样就不会因为我理解的肤浅而让您不明白题意,总之,请各位高手不吝赐教:
STL问题系列一
1、《C++STL 中文版》第一章课后习题:1-4、解释为什么在所写算法中使用其他种类的迭代器,而不是随机存取迭代器?1-5、解释为什么宁愿定义一个仅能通过迭代器来存取的数据结构,而不是让他可以被随机存取呢?
2、《C++STL 中文版》迭代器部分一直介绍输入、输去、前向、双向、随机迭代器,然而我以为只要以<iterator>建立的对象就具有随机迭代器的功能,为何讨论前向、双向呢?
3、从《C++STL 中文版》第一章后面的习题看前向、双向、随机迭代器从性质和条件上有较大差别,请问这在深层上如何理解呢?
4、《C++STL 中文版》第二章习题:2-3“当T和U中有一个是const类型时,我们可能需要经常构造一个pair<T,U>对象。下面的定义是否可以达到这样的效果?如果不可以,请说出你的理由。
template<class T,class U>inline pair<T,U> make_pair(T& x,U& y)
{return (pair<T,U> (x,y));}”
5、《C++STL 中文版》2-4“请描述出一种可能的编码情况,使得表达式 x.first < y.first ||
!(y.first < x.first) && x.second < y.second 并不等同于 x.first < y.first || x.first == y.first && x.second < y.second。”
6、STL在他的文件中定义了指针和引用,但同时还总是定义常指针和常引用,为何两者必须分开实现呢?
7、《C++STL 中文版》第四章:4-6“写出一个分配器,它将对象存储在一个磁盘文件中,并且维护一个小小的高速缓存来存储程序内存中的有效对象。”
8、《C++STL 中文版》第四章:4-7“在那种情况下,分配器应该以与模板类allocator不一致的方式来定义成员函数construct和destroy?”
9、<algorithm>文件中sort_heap函数功能:void sort_heap(RanIt first, RanIt last)重排由区间[first,last)中的迭代器指定的序列,产生一个按 operator <排序的序列。但是最初的序列也必须是一个同样按 operator < 排序的堆。这样看,那该函数的实际意义呢?