c STL自定義比較規則 含測試原始碼

2021-10-03 23:25:59 字數 3041 閱讀 1614

本實驗取材於郭煒老師《程式設計與演算法》

今天學習了很多關於stl的內容,

一、結構體排序

之前發過一章,如何自定義規則,不妨可以去看一下,下面給出比較學生的成績等內容排序

#include

#include

#include

using

namespace std;

struct student

;struct studentrule1};

struct studentrule2};

struct studentrule3};

void

printstudent

(student s,

int size)

student students=

,,,,

};intmain()

二、stl二分查詢

stl二分查詢內容非常豐富可以直追快速排序的sort,下面講解三種函式

binary_search

(a,a+6,

77)lower_bound

(a,a+6,

77)upper_bound

(a,a+6,

77)

第乙個引數是陣列的首位址,第二個引數是陣列的步長,第三個引數是查詢的值,**其中,查詢的值是,還是舉個例子,如查詢a,那麼a必須在b的後面,而且b必須在a的前面的那種,而不是人為的相等,神感覺要繞進去的感覺。**然後我再講一下lower_bound()是查詢小於等於查詢的值,而upper_bound()是查詢大於查詢的值。

其中也可以像sort一樣自定義規則。

#include

#include

#include

using

namespace std;

struct rule};

void

print

(int a,

int size)

intmain()

;sort

(a,a+6)

;print

(a,6);

cout <<

"result:"

<<

binary_search

(a,a+6,

12)<< endl;

cout <<

"result:"

<<

binary_search

(a,a+6,

77)<< endl;

sort

(a,a+6,

rule()

);print

(a,6);

cout <<

"result:"

<<

binary_search

(a,a+6,

7)<< endl;

cout <<

"result:"

<<

binary_search

(a,a+6,

8,rule()

)<< endl;

return0;

}

第一次尋找,裡面有12,所以可以正確返回,第二次尋找,裡面沒有77所以返回值錯誤,也就是陣列之外元素的值。第三次是在排序規則情況下進行查詢,這類查詢沒有意義(資料沒有順序排放),第四次是在自定義規則下進行查詢

#include

#include

#include

#define num 7

using

namespace std;

struct rule};

void

print

(int a,

int size)

intmain()

;sort

(a,a+num)

;print

(a,num)

;int

*p =

lower_bound

(a,a+num,5)

; cout <<

*p <<

","<< p-a << endl;

p =upper_bound

(a,a+num,5)

; cout <<

*p << endl;

cout <<

*upper_bound

(a,a+num,13)

<< endl;

sort

(a,a+num,

rule()

);print

(a,num)

; cout <<

*lower_bound

(a,a+num,16,

rule()

)<< endl;

cout <<

lower_bound

(a,a+num,25,

rule()

)- a << endl;

cout <<

upper_bound

(a,a+num,18,

rule()

)- a << endl;if(

upper_bound

(a,a+num,18,

rule()

)== a+num)

cout <<

"not found"

<< endl;

cout <<

*upper_bound

(a,a+num,5,

rule()

)<< endl;

cout <<

*upper_bound

(a,a+num,4,

rule()

)<< endl;

return0;

}

在這裡的時候,第一次輸出最小的下標的數字也就是5,恰好upper_bound輸出是在大於等於這個值輸出,因此結果如下

LINQ Intersect 自定義規則

如果你還不了解intersect,可參考這往篇文章 實際專案中,往往需求會複雜的多 比如有這樣乙個product類 public class product public string productname public double unitprice 需求是只要兩個product的 id和pr...

自定義含文字的線型

先看一下系統自帶的線型檔案acadiso.lin hot water supply,hot water supply hw hw hw a,12.7,5.08,hw standard,s 2.54,u 0.0,x 2.54,y 1.27 5.08 線型檔案中,每種線型必須以 開頭 hot water...

zabbix自定義監控規則

這裡先需要再zabbix端安裝乙個測試工具,用於測試自定義的規則是否可用 檢視可以安裝的工具 yum list all grep zabbix 進行安裝 yum install zabbix get.x86 64 先編寫指令碼,這個指令碼可以是python也可以是shell,下面以shell為例子 ...