partial_sum、adjacent_difference、copy
partial_sum是累计求和,adjacent_difference是求相邻元素差。
#include <vector>
#include <vector>
#include <iterator>
vector<int> v {2, 3, 5, 7, 11, 13, 17, 19};
cout << "Original data: ";
copy(v.begin(), v.end(), ostream_iterator<int>{std::cout, " "});
adjacent_difference(v.begin(), v.end(),v.begin());
cout << "\nDifferences : ";
copy(v.begin(), v.end(),ostream_iterator<int>{std::cout," "});
cout << "\nPartial sums : ";
partial_sum(v.begin(), v.end(),ostream_iterator<int>{std::cout, " "});
cout << endl;
结果不直接输出,而是存入另一数组,结果同上:
vector<int> v {2, 3, 5, 7, 11, 13, 17, 19};
vector<int> vi;
cout << "Original data: ";
copy(v.begin(), v.end(), back_inserter(vi));
copy(vi.begin(), vi.end(),ostream_iterator<int>{std::cout," "});
vi.clear();
adjacent_difference(v.begin(), v.end(),back_inserter(vi));
cout << "\nDifferences : ";
copy(vi.begin(), vi.end(),ostream_iterator<int>{std::cout," "});
vi.clear();
cout << "\nPartial sums : ";
partial_sum(v.begin(), v.end(),back_inserter(vi));
copy(vi.begin(), vi.end(),ostream_iterator<int>{std::cout," "});
cout << endl;
back_inserter(XX)是尾插,front_inserter(XX)是头插,inserter(XX,XX.begin()+k)是将XX的k位后插入。头插需要双向链表之类的数据结构。