C++STL算法
說完了排序算法接下來就剩下數值算法(numeric algorithms)了.
iota
將一組遞增的值賦值給迭代器區間內的元素
#include <numeric>
#include <algorithm>
#include <iostream>
using namespace std;
void print(int x){
???????cout << x << ' ';
}
int main(void){
???????int iArray[10];
???????iota(iArray, iArray+10, 0);
???????for_each(iArray, iArray+10, print);
???????cout << endl;
???????return 0;
}
accumulate
可以將區間的元素進行累計求和,或者你可以DIY一個累計求積之類的功能
#include <numeric>
#include <iostream>
using namespace std;
int multiply(int x, int y){
???????return x * y;
}
int main(void){
???????int iArray[5]={1, 2, 3, 4, 5};
???????cout << "數組iArray的元素和為"
??????????????<< accumulate(iArray, iArray+5, 0)
??????????????<< endl;
???????cout << "數組iArray的元素乘積為"
??????????????<< accumulate(iArray, iArray+5, 1, multiply)
??????????????<< endl;
???????return 0;
}
inner_product
對兩個區間內的元素進行累積計算,類似于上面也可以自己DIY一些功能出來
#include <numeric>
#include <iostream>
int add(int x, int y){
???????return x + y;
}
int mul(int x, int y){
???????return x * y;
}
int main(void){
???????using namespace std;
???????int iArray1[3]={2, 5, 4};
???????int iArray2[3]={10, 6, 5};
???????//用原型1計算內積
???????int result=inner_product(iArray1, iArray1 + 3, iArray2, 0);
???????cout << "數組iArray1與數組iArray2的內積為" << result << endl;
???????//用原型2計算內積
???????result=inner_product(iArray1, iArray1 +3, iArray2, 0, add, mul);
???????cout << "數組iArray1與數組iArray2的內積為" << result << endl;
???????return 0;
}
partial_sum
對區間元素進行局部求和,當然也支持DIY
#include <numeric>
#include <algorithm>
#include <iostream>
using namespace std;
void print(int x){
???????cout << x << ' ';
}
int multiply(int x, int y){
???????return x * y;
}
int main(void){
???????int iArray[5]={1, 2, 3, 4, 5};
???????int iResult[5];
???????//求和
???????partial_sum(iArray, iArray+5, iResult);
???????for_each(iResult, iResult+5, print);
???????cout << endl;
???????//計算階乘
???????partial_sum(iArray, iArray+5, iResult, multiply);
???????for_each(iResult, iResult+5, print);
???????cout << endl;
???????return 0;
}
adjacent_difference
對相鄰元素求差
power
用于進行n次方的計算
v1.insert(v1.end(), v2.begin(), v2.end() );
轉載:http://hi.baidu.com/642168618/blog/item/70b59460a67cded38cb10d02.html
總結
- 上一篇: 背包问题代码
- 下一篇: vs2008 c++ 调用java