首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一系列STL有关问题<1>

2012-04-19 
一系列STL问题1一直在学习STL,用的书籍是王昕译的《C++STL中文版》,学习中产生很多问题,特在这向各位高手

一系列STL问题<1>
一直在学习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   <   排序的堆。这样看,那该函数的实际意义呢?

[解决办法]
换本书吧。换《STL.Tutorial.and.Reference.Guide》吧。
[解决办法]
2、《C++STL 中文版》迭代器部分一直介绍输入、输去、前向、双向、随机迭代器,然而我以为只要以 <iterator> 建立的对象就具有随机迭代器的功能,为何讨论前向、双向呢?
----------> 迭代器是与容器相关的,设计的目的在于提供一个通过的遍历容器的方法
[解决办法]
单、双链表类型的容器,无法实现随机存储。
算法基本上是对一个序列进行操作,比如copy算法,仅仅只用到了后向的功能,何必使用随机存储的迭代器?如果限定使用随机的迭代器的话,那么链表类型的容器,将无法使用copy算法。

STL在他的文件中定义了指针和引用,但同时还总是定义常指针和常引用,为何两者必须分开实现呢?
~~~~~~~~得考虑const的对象

双向、随机迭代器从性质和条件上有较大差别,请问这在深层上如何理解呢?
~~~~~~~~~~~~~~~~~~~~你考虑树、链表、数组的区别就可以知道他们为啥在性质和条件上会有较大差别了。

热点排行