c map 結構體作為key關鍵詞

2021-10-05 21:26:26 字數 989 閱讀 5150

結構體的定義:

這裡的結構體是三個值 int x; int y; int label;

當三個值作為key值時,你需要重新定義它的對比操作operator,這樣才能對map進行查詢操作;

//資料結構宣告;並且對key的查詢操作進行定義,這樣才能進行find等操作

struct point

friend bool operator <

(const point &a,

const point &b)

;};inline bool operator <

(const point&a,

const point&b)

struct point_label

friend bool operator <

(const point_label &a,

const point_label &b)

;};inline bool operator <

(const point_label&a,

const point_label&b)

map的使用:

std:

:map

prm;

int i =1;

int j =2;

int cl =12;

//當前結構就是point(i,j),cl 作為key值

point_label pointlabel

(i, j, cl)

;std:

:map

::iterator it;

//查詢操作,是否存在pointlabel,不存在,構建make_pair插入

it =

prm.

find

(pointlabel);if

(it !=

prm.

end())

else

c map中key為結構體

專案中需要將結構體作為hash的key,一開始用hash map,但是結構體中多值比較一直失敗,所以嘗試了map。hash map 查詢速度會比map快,而且查詢速度基本和資料量大小無關,屬於常數級別 而map的查詢速度是log n 級別。hash還有hash函式的耗時。當有100w條記錄的時候,m...

結構體作為屬性

main.m 結構體作為屬性 created by mac on 16 5 10.import 淺拷貝 淺拷貝只是增加了乙個指標指向已經存在的記憶體。占用的同乙個記憶體 深拷貝 深拷貝是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,占用的是兩個不同的記憶...

結構體作為引數傳遞

把結構體作為引數傳遞 1.對於我來這樣是很難理解的。結構體名不像陣列名那樣是這塊記憶體塊的位址。當用結構體指標做引數的時候。就應該用 來取出該結構體的位址,才能使用。2.當把就夠體名作為引數的時候。如 include struct name funds stan 定義結構體變數 double sum...