STL 源碼分析 # stl_number #
/***********************************************************
Programmer : EOF
e-mail : [email protected]
Date : 2015.04.04
File : 6number.cpp
************************************************************/
#include <numeric>
#include <vector>
#include <functional>
#include <iostream>
#include <iterator>
using namespace std;
int main(int argc, char const *argv[])
{
int ia[5] = {1,2,3,4,5};
vector<int> iv(ia, ia + 5);
cout << accumulate(iv.begin(), iv.end(), 0) << endl;
cout << accumulate(iv.begin(), iv.end(), 0, minus<int>() ) << endl;
cout << inner_product(iv.begin(), iv.end(), iv.begin(), 10) << endl;
cout << inner_product(iv.begin(), iv.end(),
iv.begin(), 10, minus<int>(), plus<int>())
<< endl;
ostream_iterator<int> oite(cout, " ");
partial_sum(iv.begin(), iv.end(), oite);
partial_sum(iv.begin(), iv.end(), oite, minus<int>());
adjacent_difference(iv.begin(), iv.end(), oite);
adjacent_difference(iv.begin(), iv.end(), oite, plus<int>());
for(int i = 0; i < iv.size(); i++)
{
cout << iv.at(i) << " ";
}
cout << endl;
return 0;
}
accumulate()的實現
內積 inner_product()
/
partial_sum()和之前的accumulate()不一樣,partial_sum()可能會把一步步積分的結果粗村在__result指向的
"連續數據結構內".之所以這麼說,是因爲,這貨可能是數組,也可能是其他支持++運算符迭代器的類型.
把相鄰的數據做差分,然後儲存在__result指向的數據結構內
power()的實現.不過話說我主機裏面的STL 還沒有支持power...不能用.