首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

习题

1. 使用随机数生成器,生成0~9 999的10 000个整数,并将它们放到list<int>容器中(见7.1节),计算并打印它们的中间值。你期望的输出结果是什么?请计算每个值出现的频率(也就是说,出现了多少个0,多少个1,等等),并打印具有最高频率的数值。请使用vector<int>存储频率值。

2. 重新编写print(const list<double> &lst)函数,使它成为一个尽可能通用的模板函数(见7.1节)。

3. 为vector<> v编写一个算法,能够将值添加到元素v[2*i]中,即vector的偶数索引中。使用int和double类型进行测试。

4. 编写一段可输入字符串的程序,然后将字符串分解为一个单词列表,最后对这个单词列表排序并打印该列表。这里需要使用list<string>和STL。

5. 为list<T>编写下列成员函数:

   iterator list<T>::insert(iterator w_it, T v);

   该函数在w_it前插入v并返回指向插入元素的迭代器(见7.1节)。

6. 为list<T>编写下列成员函数:

   void list<T>::erase(iterator w_it);

   该函数移除w_it指向的元素(见7.1节)。

7. 编写一个算法查找任意容器类里存储的第二大元素。使用STL容器vector<T>、list<T>和set<T>进行测试。编写算法时假定使用前向迭代器和比较操作。

8. 为STL库函数count_if(b,e,p,n) 编写模板代码并测试,其中p是谓词,n是求和变量。

9. 使用STL容器类重写4.7节中的五张同花牌的程序。

10. 使用random_shuffle()代替原始代码中的shuffle(),重新完成习题9。为什么这种方法更好一些?

11. 改进stl_multiset.cpp程序,使用输出vegetable was eaten k times代替简单的无标识整数输出。实现该操作的一种方法是创建一个蔬菜名字数组,数组的索引为蔬菜的枚举值。

12. 将习题11中蔬菜的排序关系修改为lesser<vegetable>并打印结果。

13. 使用map创建一个包含食物和其对应卡路里的表。例如,胡萝卜-45,冰淇淋-250,等等。map中至少包含10种食物。每餐使用随机数生成器挑选4种食物,打印出所选食物及其卡路里。

14. 编写一个比较对象,该对象使用对象的平方值进行比较。因此,使用该比较对象后,一个大的负数比一个小的正数要大。在vector中产生-100~+100的整数,并使用这个排序对象调用STL的排序算法,打印最终结果。

15. 编写一个STL算法product(b1,e1,b2,c1)实现元素乘法,它将从b1开始的数和从b2开始的对应位置的数相乘,并将结果存储在以c1开始的位置。参数e1是第一个序列的警戒值。

16. (项目)设计一个数据类型class matrix,使用vector保存一个矩形元素数组。如何为这样的二维容器实现迭代器?考虑矩阵加法和乘法这样的基本存取操作和算法。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论
    图书导读