C 演算法中計算相關的函式

2021-10-09 02:42:32 字數 3661 閱讀 2227

/*

* @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首先我...