2015级C++第15周程序阅读 范型程序设计
来源:互联网 发布:java socket 双向通信 编辑:程序博客网 时间:2024/05/17 09:10
阅读下面的程序,对照运行结果,领会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;}
1 0
- 2015级C++第15周程序阅读 范型程序设计
- 《C语言及程序设计》第25讲阅读程序
- 《C语言及程序设计初步》第33讲阅读程序
- 第14周 《C语言及程序设计》程序阅读——数组与指针
- 第十五周程序阅读-范型程序设计(1)
- 第十五周程序阅读-范型程序设计(2)
- 第十五周程序阅读-范型程序设计(3)
- 第十五周程序阅读-范型程序设计(4)
- 第十五周程序阅读-范型程序设计(5)
- 第十五周程序阅读-范型程序设计(6)
- 2015级C++第16周程序阅读 文件操作
- 第15周程序阅读(1)
- 第15周项目2-阅读程序
- 第15周项目2.1 阅读程序
- 第15周 项目2 阅读程序
- 第15周项目2-阅读程序
- 第15周 项目2-阅读程序
- 第15周项目2-阅读程序
- 沉浸式状态栏颜色设置,对android4.4~6.0的总结
- 讯飞语音听写开发入门之获取appid号
- C++第七次上机实验
- 4.3 概率判别式模型
- 剑指offer-28字符串的排列
- 2015级C++第15周程序阅读 范型程序设计
- static const extern在C与C++中的区别
- 每日一得--关于Integer大小比较的问题
- 码表dashboard仪表盘自定义View的开发
- Android 开发资源整合
- 根据IP解析地址
- iOS -- CALayer之简单的使用
- Git 学习指南
- Redis 学习(一)redis的安装