几个函数"/>
c++中数值运算的几个函数
以下几个函数都要包含头文件<numeric>
1 itoa函数
先看函数原型
template<class _FwdIt, class _Ty> inline
void iota(_FwdIt _First, _FwdIt _Last, _Ty _Val)
这个函数先把value赋值给*first, 再奖value++, 再把value赋值给下一个值,以此类推。
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ 1, 2, 3, 4, 5 };for (auto item : input) {cout << item << " ";}cout << endl;iota(input.begin(), input.end(), 3);for (auto item : input) {cout << item << " ";}cout << endl;cin.get();return 0;
}
结果为:
1 2 3 4 5
3 4 5 6 7
2 adjacent_difference函数
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ -1,4,6,8,10 };for (auto item : input) {cout << item << " ";}cout << endl;adjacent_difference(input.begin(), input.end(), input.begin());for (auto item : input) {cout << item << " ";}cout << endl;cin.get();return 0;
}
结果为:
-1 4 6 8 10
-1 5 2 2 2
也可以自己指定函数:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ -1,4,6,8,10 };for (auto item : input) {cout << item << " ";}cout << endl;adjacent_difference(input.begin(), input.end(), input.begin(), [](int a, int b)->int {return 2 * b - 3 * a; });for (auto item : input) {cout << item << " ";}cout << endl;cin.get();return 0;
}
结果为:
-1 4 6 8 10
-1 -14 -10 -12 -14
3 partial_sum函数
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ -1,4,6,8,10 };for (auto item : input) {cout << item << " ";}cout << endl;partial_sum(input.begin(), input.end(), input.begin());for (auto item : input) {cout << item << " ";}cout << endl;cin.get();return 0;
}
结果为:
-1 4 6 8 10
-1 3 9 17 27
也可以指定运算:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ -1,4,6,8,10 };for (auto item : input) {cout << item << " ";}cout << endl;partial_sum(input.begin(), input.end(), input.begin(), [](int a, int b)->int {return 2 * b - 3 * a; });for (auto item : input) {cout << item << " ";}cout << endl;cin.get();return 0;
}
结果为:
-1 4 6 8 10
-1 11 -21 79 -217
4 inner_product
这个求两个向量的卷积
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input1{ 1,2,3 };vector<int> input2{ -1, 0 ,2 };auto res = inner_product(input1.begin(), input1.end(), input2.begin(), 0);cout << res;cin.get();return 0;
}
结果为:
5
5 accumulate
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{vector<int> input{ 1,2,3 };auto res = accumulate(input.begin(), input.end(), 0);cout << res;cin.get();return 0;
}
结果为:
6
更多推荐
c++中数值运算的几个函数
发布评论