Re: [問題] 關於STL的set

看板C_and_CPP (C/C++)作者 (好可愛?)時間16年前 (2009/07/22 17:02), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《timTan (用口頭禪區分年記)》之銘言: : ※ 引述《stockyo (就做吧)》之銘言: : : 請問一下 : : 若我需要儲存的資料字串為 "book" "apple" "apple" "cat" : : 但我想要過濾掉apple重覆一次,也就是儲存一次就好 : : 我發現set可以達到我的要求 : : 可是,我又想要順序不亂,也就是按照我的輸入 : : 變成 "book" "apple" "cat" : : 但...set卻會自己排好序 : : 請問有什麼方法可以兩全其美嗎? : set , vector 並用 : 使用 set 來檢查重複性 : 使用 vector 來儲存資料,維持你插入的順序

07/22 16:26,
請問如何用set只檢查重複性呢?
07/22 16:26

07/22 16:47,
if( yourSet.find( blah...)!= ...) yourVector.push_...
07/22 16:47
也可以試試檢查set insert後的回傳值 set在insert之後回傳的pair中 first是安插後的element位址 second則是insert動作是否成功 印象中如果有重複值的話 second的部份應該是會回傳false 所以程式就可以用下面的寫法 std::set<int> c; std::vector<int> d; ... if (c.insert(1).second) { d.insert(1); } ... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.14.67

07/22 17:05, , 1F
我寫個小程式試試看!!
07/22 17:05, 1F

07/22 17:09, , 2F
OK...這樣寫法滿乾淨的...謝謝!!
07/22 17:09, 2F

07/23 19:22, , 3F
公認的技法是用 c.count(1) 去檢查 1 的存在性。
07/23 19:22, 3F

07/23 19:23, , 4F
set 這種 unique 的容器 count() 傳回值非 0 即 1。
07/23 19:23, 4F

07/25 14:11, , 5F
主要是考量到set也需要新增變數 所以才會想用這種寫法
07/25 14:11, 5F

07/25 14:12, , 6F
跟先用count判斷有無存在之後再新增 不知道這樣時間差多少
07/25 14:12, 6F
文章代碼(AID): #1APjMtlu (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #1APjMtlu (C_and_CPP)