看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2008 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) MFC 問題(Question): 請問std::map以struct當key時,該如何寫"operator<" 使得使用map::find可以正確回傳要找的key的iterator? 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/hE1bEh 補充說明(Supplement): 不好意思,小弟又上來請教一下各位先進。 以上面的範例為例,假設我自己定義一個SiteInfo struct, 想要以它為key,放入std::map裡面。 當我使用std::map::find的時候,VC2008跟我說缺少"operator<"沒做。 我找版上的文章看到之前有類似的問題(6447篇), 但是我定義的struct中跟之前的範例有所不同: 1. 6447篇的版友定義的struct裡面都是int,而我有兩個CString 2. SiteInfo這個struct被我用來辨認是否為同一隻camera, 其中SiteID跟MAC必須相同,SiteName可以不同。 問題來了 1. 我不知道CString MAC該如何比大小? 2. SiteName我不需要用來比較是否為同一隻,但是不寫在operator<裡面好像不行? 上面的網址的程式馬是我從我的project擷取出來的。 我用VC2008這樣寫可以過,但是執行時 1. debug版,insert第二個時會直接跳出警告視窗,告訴我operator<出問題 2. release版,可以insert,但是在find的地方找出來的iterator是錯的 請教版上各位先進該怎麼解決呢? 感激不盡。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.209.129 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1419964261.A.BBF.html ※ 編輯: Keitaro (114.43.209.129), 12/31/2014 02:32:44
CaptainH: 你的寫法有可能使得a<b和b<a同時成立 12/31 03:06
CaptainH: 應先檢查id,相異時比較id即可,相同時才檢查第二條件 12/31 03:08
Keitaro: 測試後OK 感謝您的幫忙! 01/02 06:33