亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

基于C++ map中key使用指針問題的詳解

2020-01-26 16:13:19
字體:
來源:轉載
供稿:網友

C++實際開發的過程會經常使用到map。map是一個key-value值對,key唯一,可以用find進行快速的查找。其時間復雜度為O(logN),如果采用for循環進行遍歷數據時間復雜度為O(N)。如果map中的數據量比較少時,采用find和for循環遍歷的效率基本沒有太大的區別,但是在實際的開發過程中,存儲在map中的數據往往是大量的,這個時候map采用find方式效率比遍歷效率高的多。

確定采用find方式查找數據后,我們需要考慮存儲map的空間復雜度,對于基礎數據類型的數據(int char等)這里就不做討論。本文討論的是map中存儲的數據結構struct情況。
1、如果map中的key為struct此時,需要先對struct進行操作符重載,關于這部分內容可以參考C++ 重載操作符示例
2、map中的key只能是對象,而不能是指針。(這一點尤為重要)。

下面給出三個map定義進行說明:

std::map<NHSymbolkey, Stru_NHSymbol>*   pmapNHSymbolInfo1
std::map<NHSymbolkey, Stru_NHSymbol*>*  pmapNHSymbolInfo2
std::map<NHSymbolkey*, Stru_NHSymbol*>*  pmapNHSymbolInfo2

其中,pmapNHSymbolInfo1、pmapNHSymbolInfo2中使用find正常,遍歷也正常,pmapNHSymbolInfo3使用find查找不到對應的數據(數據已經存在,find不到,遍歷可以找到)

原因:std::map<NHSymbolkey*, Stru_NHSymbol*>*  pmapNHSymbolInfo2在find的時候是根據指針進行查找的。而在數據insert時,數據都是new的,每次new出的地址是不一樣的,在find數據時,根據地址查找結果就找不到數據。通過遍歷是取出地址中內容一一比較,這樣能夠找到數據。

pmapNHSymbolInfo1、pmapNHSymbolInfo2兩種方式都可以使用find方式查找數據,但是pmapNHSymbolInfo1中Stru_NHSymbol為對象,這樣會使map占用空間比較大,pmapNHSymbolInfo2的Stru_NHSymbol為指針,存儲時地址占用空間小,但是每次都是new處理來的,所有一定要記住使用完成后一定要delete,否則會出現內存泄露。

3、map插入數據2中方式比較 
std::map<NHSymbolkey, Stru_NHSymbol*>*  pmapNHSymbolInfo
pmapNHSymbolInfo->insert(std::make_pair(pNHSymbolkey, pNHSymbol));該方式的key如果出現重復,則會插入數據失??;

(*pmapNHSymbolInfo)[objNHSymbolkey] = pNHSymbol;該方式的key如果出現重復則直接覆蓋掉原來的數據,永遠不會出現插入失敗的問題。
結論:C++ map中key不要使用指針,請直接使用對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一二三视频| 久久久精品久久久| 日韩精品免费观看| 欧美成人高清视频| 久久久国产精品一区| 亚洲a级在线观看| 中文字幕亚洲情99在线| 欧美野外wwwxxx| 91高清视频免费| 91精品国产色综合| 国产99视频在线观看| 成人国产精品久久久久久亚洲| 欧美影院在线播放| 久久精品一本久久99精品| 久久久久久久影视| 欧美日韩免费在线观看| 日韩视频在线一区| 亚洲free性xxxx护士hd| 欧美精品一区二区三区国产精品| 成人写真视频福利网| 国产精品电影久久久久电影网| 国模吧一区二区三区| 欧美日韩在线一区| 亚洲欧美日韩视频一区| 国产香蕉一区二区三区在线视频| 精品欧美aⅴ在线网站| 亚洲女人被黑人巨大进入| 亚洲午夜未满十八勿入免费观看全集| 欧美一区二区.| 日韩av成人在线| 久久精品在线播放| 欧美另类精品xxxx孕妇| 国产精品99免视看9| 欧美亚洲另类在线| 亚洲伊人久久大香线蕉av| 日韩中文字幕第一页| 91精品综合久久久久久五月天| 亚洲成年人在线播放| 久久伊人色综合| 国产一区二区三区在线观看视频| 亚洲精品在线91| 92国产精品久久久久首页| 亚洲欧美日韩久久久久久| 精品国产电影一区| 国产成人综合亚洲| 国产精品久久久久久久9999| 欧美高清视频在线观看| 欧美午夜片在线免费观看| 夜夜嗨av一区二区三区免费区| 成年人精品视频| 欧美国产一区二区三区| 欧美日韩美女在线观看| 日韩精品高清在线观看| 亚洲电影免费观看高清| 久久久人成影片一区二区三区| 精品国产区一区二区三区在线观看| 97国产精品免费视频| 97视频网站入口| 欧美日本国产在线| 高清在线视频日韩欧美| 久久久久久久亚洲精品| 欧美专区在线播放| 欧美精品情趣视频| 精品视频久久久久久久| 久久免费精品视频| 国产精品草莓在线免费观看| 国产精品久久久久久网站| 久久久噜噜噜久噜久久| 欧美成人在线影院| 日韩黄色在线免费观看| 国产精品草莓在线免费观看| 最新国产精品亚洲| 精品国产鲁一鲁一区二区张丽| 欧美激情第三页| 亚洲欧美日韩在线一区| 九九热这里只有精品6| 欧美日韩国产精品一区| 国产精品99久久久久久白浆小说| 亚洲自拍另类欧美丝袜| 国产日韩欧美另类| 国产精品久久久久久久久免费| 欧美中在线观看| 亚洲字幕一区二区| 精品久久久久久久久久| 成人亚洲综合色就1024| 亚洲精品www久久久| 国产欧美日韩视频| 国产精品入口夜色视频大尺度| 国模私拍视频一区| 国产精品白嫩美女在线观看| 久久国产一区二区三区| 中文字幕精品影院| 成人激情视频在线播放| 国产日本欧美在线观看| 国产91精品青草社区| 在线精品91av| 欧美激情亚洲国产| 亚洲成成品网站| 97视频免费看| 成人黄色av播放免费| 精品久久久久久久久久国产| 日韩中文字幕在线免费观看| 亚洲精品少妇网址| 国产午夜精品免费一区二区三区| 国产精品第10页| 亚洲电影免费在线观看| 亚洲最大中文字幕| 岛国av一区二区在线在线观看| 亚洲成年人在线播放| 国模精品视频一区二区三区| 午夜精品久久久久久久男人的天堂| 97精品在线观看| 欧美日韩国产精品| 狠狠躁18三区二区一区| 日韩福利在线播放| 欧美日韩在线免费| 欧美整片在线观看| 在线播放日韩专区| 久久99国产精品久久久久久久久| 日韩精品视频在线观看免费| 国内精品久久久| 97在线视频国产| 亚洲黄页视频免费观看| 亚洲午夜未满十八勿入免费观看全集| 91精品视频网站| 在线精品视频视频中文字幕| 久久乐国产精品| 国产精品中文在线| 欧美日韩国产999| 亚洲最新在线视频| 久久偷看各类女兵18女厕嘘嘘| 欧美性20hd另类| 国产精品爽爽爽爽爽爽在线观看| 欧美日韩另类视频| 亚洲成人激情视频| 精品国产一区二区三区久久久狼| 中文字幕亚洲综合久久筱田步美| 成人情趣片在线观看免费| 亚洲激情电影中文字幕| 日韩在线播放一区| 欧美裸身视频免费观看| 国产成人自拍视频在线观看| 久久久久久这里只有精品| 欧亚精品在线观看| 欧美在线一区二区视频| 亚洲区在线播放| 欧美一级视频免费在线观看| 久久精品视频va| 久久精品国产99国产精品澳门| 97精品一区二区视频在线观看| 热久久这里只有精品| 黑人精品xxx一区| 琪琪亚洲精品午夜在线| 国产女同一区二区| 中文字幕日韩在线视频| 欧美富婆性猛交| 亚洲三级 欧美三级| 狠狠爱在线视频一区| 亚洲摸下面视频| 麻豆国产精品va在线观看不卡| 日韩在线中文视频| 中文日韩电影网站| 一区二区在线免费视频| 91精品国产99久久久久久|