/*
* @description: 對演算法中numeric中函式的一些測試和使用
* @author: szq
* @github:
* @date: 2020-08-11 21:00:45
* @lasteditors: szq
* @lastedittime: 2020-08-12 00:27:48
* @filepath: \cpp\src\algorithm\numeric.cpp
*/#include
#include
#include
#include
#include
using
namespace std;
//自定義累乘,過載operator()
template
<
class
t>
struct multi};
/** * @destription: 測試accumulate函式
* @param:iv:乙個序列
* @return:none
*/void
testaccumulatefunction
(vector<
int>
&iv));
cout <<
"lambda的累乘結果為:"
<< res << endl;
//120
//使用可呼叫物件,和上面累乘一樣的效果
res =
accumulate
(iv.
begin()
,iv.
end(),
1,multi<
int>()
);//multi()不是呼叫函式,是呼叫建構函式,建立乙個臨時物件。
cout <<
"自定義可呼叫物件的累乘結果為:"
<< res << endl;
//120
cout <<
"*************************====testaccumulatefunction end!******************************==="
<< endl;
}/**
* @destription: 測試inner_product函式
* @param
* @return
*/void
testinnerproductfunction
(vector<
int>
&iv)
/** * @destription: 測試partial_sum函式
* @param
* @return
*/void
testpartialsumfunction
(vector<
int>
&iv)
cout << endl;
//自定義操作,求字首差
partial_sum
(iv.
begin()
,iv.
end(
),res.
begin()
,minus<
int>()
);cout <<
"字首差結果為:"
;for
(auto num : res)
cout << endl;
//自定義操作,求字首積
partial_sum
(iv.
begin()
,iv.
end(
),res.
begin()
,multiplies<
int>()
);cout <<
"字首積結果為:"
;for
(auto num : res)
cout << endl;
cout <<
"*************************====testpartialsumfunction end!******************************==="
<< endl;
}/**
* @destription: 測試adjacent_difference函式
* @param
* @return
*/void
testadjacentdifferencefunction
(vector<
int>
&iv)
cout << endl;
//自定義操作,求相鄰兩個數的和
adjacent_difference
(iv.
begin()
,iv.
end(
),res.
begin()
,plus<
int>()
);cout <<
"相鄰兩個數的和結果為:"
;for
(auto num : res)
cout << endl;
//自定義操作,求相鄰兩個數的積
adjacent_difference
(iv.
begin()
,iv.
end(
),res.
begin()
,multiplies<
int>()
);cout <<
"相鄰兩個數的積結果為:"
;for
(auto num : res)
cout << endl;
cout <<
"*************************====testadjacentdifferencefunction end!******************************==="
<< endl;
}/**
* @destription: 測試iota函式
* @param
* @return
*/void
testiotafunction()
cout << endl;
cout <<
"*************************====testiotafunction end!******************************==="
<< endl;
}int
main()
; vector<
int>
iv(nums,nums +5)
;//測試accumulate函式
testaccumulatefunction
(iv)
;//測試inner_product函式
testinnerproductfunction
(iv)
;//測試partial_sum函式
testpartialsumfunction
(iv)
;//測試adjacent_difference函式
testadjacentdifferencefunction
(iv)
;//測試iota函式
testiotafunction()
;}
C語言中計算機的記憶體相關
程式設計的一些基礎知識 1.計算機的記憶體。在程式執行時,組成程式的指令和程式所操作的資料都必須存在機器的記憶體中,成為主記憶體 main memory 或者隨機訪問儲存器 random access memory,ram 還包含一種儲存器,唯讀儲存器 ram,read only memory 比如...
STL中計算排列組合關係的演算法
演算法思想 首先,從最尾端開始往前尋找兩個相鄰的元素,令第乙個元素為 i,第二個元素為 ii,且滿足 i ii 找到這樣一組相鄰元素後,再從最尾端開始往前檢驗,找出第乙個大於 i的元素,令為 j,將i,j元素對調,再將ii之後的所有元素顛倒排列。此即所求之 下乙個 排列組合。stl中函式名稱為nex...
KMP演算法中計算next值和nextval的值
書上關於next和nextval的修正值方法比較難理解,所以我這裡講解自己的方法。這裡我就不介紹關於字串匹配中kmp的優點,也不強調next的修正值比next的值好在哪,我們就說方法就行了。來,首先給我們乙個序列j1 2345 678模式串ab aabc acnext j 01 1223 12首先我...