- /*
- *Copyright (c) 2016,烟台大学计算机学院
- *All rights reserved.
- *文件名称:zwj.cpp
- *作 者:李落才
- *完成日期:2016年6月5日
- *版 本 号:v1.0
- *
- *问题描述:阅读程序,对照运行结果,领会STL的用法
- *输入描述:
- *程序输出:
- */
- #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;
- }