在这里使用了 transform 函数实现了相反数的处理
其中:
transform现代码如下:
template <class InputIterator, class OutputIterator, class UnaryFunction> OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryFunction op) { for (;first != last; ++first, ++result) *result = op(*first); return result; }
transform算法顺序遍历first和last两个迭代器所指向的元素;
将每个元素的值作为函数对象op的参数;
将op的返回值通过迭代器result顺序输出;
遍历完成后result迭代器指向的是输出的最后一个元素的下一个位置,transform会将该迭代器返回
完全体如下:
#include <iostream> #include <vector> #include <iterator> #include <algorithm> #include <functional> using namespace std ; int main() { const int N = 5; vector<int>s(N); for(int i = 0 ; i < N;i++) { cin>>s[i]; } transform(s.begin(),s.end(),ostream_iterator<int>(cout," "),negate<int>()); cout<<endl; return 0 ; }