阅读下面的程序,对照运行结果,领会STL的用法
(1)

#include <string>
#include <set>
#include <iterator>
#include <iostream>
using namespace std;
int main()
{set <string> strset;strset.insert("cantaloupes");strset.insert("grapes");strset.insert("apple");strset.insert("orange");strset.insert("banana");strset.insert("grapes");copy(strset.begin(), strset.end(), ostream_iterator<string>(cout, " "));cout << endl;return 0;
}

(2)

#include <functional>
#include <numeric>
#include <vector>
#include <iostream>
using namespace std;
int main()
{vector<int> v(5);for (int i = 0; i < 5; i++)v[i] = i + 1;int sum = accumulate(v.begin(), v.end(), 0);cout << "Sum of values == " << sum << endl;int product = accumulate(v.begin(), v.end(), 1, multiplies<long>());cout << "Product of values == " << product << endl;return 0;
}

(3)

#include <algorithm>
#include <functional>
#include <vector>
#include <iostream>
#include <numeric>
#include <iterator>
using namespace std;
int main()
{int a[] = {1,4,7,2,5,8};int b[] = {1,2,3,3,2,1};const int ASZ = sizeof a / sizeof a[0];const int BSZ = sizeof b / sizeof b[0];ostream_iterator<int> out(cout,"  ");copy(a, a + ASZ, out);cout<<endl;copy(b, b + BSZ, out);cout<<endl;int r = accumulate(a, a + ASZ, 0);cout << "accumulate 1: " << r << endl;// Should produce the same result:r = accumulate(b, b + BSZ, 0, plus<int>());cout << "accumulate 2: " << r << endl;r = inner_product(a, a + ASZ, b, 0);// 或  r = inner_product(a, a + ASZ, b, 0, plus<int>(), multiplies<int>());cout << "inner_product : " << r << endl;int* it = partial_sum(a, a + ASZ, b);// 或 int* it = partial_sum(a, a + ASZ, b, plus<int>());copy(b, it, out);cout<<endl;it = adjacent_difference(a, a + ASZ, b);// 或 it = adjacent_difference(a, a + ASZ, b, minus<int>());copy(b, it, out);cout<<endl;return 0;
}

(4)

#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
class myAdd: public binary_function<int,int,int>
{
public:int operator()(int a, int b) const{return a+b;}
};
int main()
{int a[5]= {1,2,3,4,5};vector<int> my(5);transform(a,a+5,my.begin(), bind2nd(myAdd(), 4));copy(my.begin(), my.end(), ostream_iterator<int>(cout, " "));cout<<endl;transform(a,a+5,a,my.begin(), myAdd());copy(my.begin(), my.end(), ostream_iterator<int>(cout, " "));cout<<endl;return 0;
}

(5)

#include <iterator>
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
using namespace std;
class Angle
{int degrees;
public:Angle(int deg) : degrees(deg) {}int mul(int times){return degrees *= times;}
};
int main()
{int x[] = {1, 2, 4, 5, 8};vector<Angle> va;for(int i =10; i <= 50; i += 10)va.push_back(Angle(i));transform(va.begin(), va.end(), x, ostream_iterator<int>(cout , "  "), mem_fun_ref(&Angle::mul));cout << endl;return 0;
}

(6)

#include <string>
#include <iostream>
#include <map>
using namespace std;
class CStudent
{
public :int nStudentID;int nAge;
public :CStudent()  {  }CStudent(int nSID, int nA){nStudentID=nSID;nAge=nA;}//复制构造函数CStudent(const CStudent& ob) {nStudentID=ob.nStudentID;nAge=ob.nAge;}
};
int main()
{map <string, CStudent> mapStudent;mapStudent["zhangsan"] = CStudent(100012, 22);mapStudent["Lisi"] = CStudent(100085, 21);mapStudent["Wangwu"] = CStudent(100093, 23);cout << "The Student number for Lisi  is " <<(mapStudent["Lisi"].nStudentID) << endl;return 0;
}

2015级C++第15周程序阅读 范型程序设计相关推荐

  1. 第十五周程序阅读-范型程序设计(6)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  2. 第十五周程序阅读-范型程序设计(5)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  3. 第十五周程序阅读-范型程序设计(4)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  4. 第十五周程序阅读-范型程序设计(3)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  5. 第十五周程序阅读-范型程序设计(2)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  6. 第十五周程序阅读-范型程序设计(1)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月6日 *版 本 ...

  7. 2015级C++第14周程序阅读 STL中的简单容器和迭代器

    阅读并运行程序,解释程序执行得到的结果 (1) #include<iostream> #include<vector> #include<iterator> usi ...

  8. 2015级C++第10、11周程序阅读(补充) 继承和派生

    (1) #include<iostream> using namespace std; class G { public:static int m;G( ){ //构造函数m++;cout ...

  9. 2015级C++第10、11周程序阅读 继承和派生

    阅读程序,请写出这些程序的运行结果 (1)阅读程序,写出执行结果 #include <iostream> using namespace std; class Data { public: ...

最新文章

  1. abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白
  2. JS正则表达式验证账号、手机号、电话和邮箱
  3. 【图文详解】JAVA中的转义字符
  4. 英国如何推动分享经济的发展?
  5. PHP checkdate()函数与示例
  6. bzoj2425 [HAOI2010]计数 组合数
  7. 注解@CrossOrigin详解
  8. 监控Nginx负载均衡器脚本
  9. var,object和dynamic
  10. 7-4 panic和recover
  11. Tiny4412 小试牛刀
  12. 【IT项目管理】第3章 整合项目的资源
  13. QtQuick 技巧 2
  14. 此程序被组策略阻止,有关详细信息请联系管理员
  15. 卡牌大师怎么玩_LOL高端局中的常客,卡牌大师上分攻略,最完美的节奏大师!...
  16. 【Linux】gvim封装至gvi命令
  17. win10安装的虚拟机无法连接网络
  18. 上海亚商投顾大盘回顾:两市成交仅5600亿元 创两年半以来新低
  19. mipi传输距离3米_HDMI信号远距离如何实现传输?
  20. matlab在二维平面和三维空间中绘制圆形

热门文章

  1. 关于C语言中的一些注意问题的小记之一----+号使用
  2. java 基础算法教程ppt,基础排序算法(附加java实现)
  3. 懂得了这些才可以说学习Python入门了
  4. 如何查看matlab的启动参数,如何使用多个参数在Matlab中执行“查找”?
  5. VBS遍历Excel工作表的方法
  6. 【MySQL】数据库1 (数据库+基本操作介绍)
  7. python中使用html前端页面显示图像预测结果(Pycharm)
  8. HDU6346(最小权值完美匹配)
  9. 线段树 ---- Codeforces 737 Div2 D. Ezzat and Grid 维护dp
  10. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络