推 BlazarArc: 用 condition.find(currentData) 紀錄 index 再依據 01/13 14:28
→ uranusjr: 把 conditionVector 裡面的東西做成 map 01/13 14:28
請問一下,conditionVector裡面塞map,可是我該怎麼去依照map做排序@@?
不知道是不是我理解錯了,請問妳意思是說意思是說
conditionVector.push_back(map(1,"111"))
conditionVector.push_back(map(2,"10"))
...
conditionVector.push_back(map(5,"200"))
這樣嗎@@?
→ BlazarArc: index搜尋? 至少複雜度不是走訪整個condition 01/13 14:29
→ BlazarArc: 依據 index sort, 說錯 01/13 14:29
→ BlazarArc: condition 可用 std::unordered_set 01/13 14:29
不好意思,小弟比較愚笨一點
unordered_set的find找到之後,要怎麼記錄該筆資料在set的index?
unordered_set不是不會有順序嗎@@?
謝謝各位
※ 編輯: googled (203.64.91.83), 01/13/2015 15:27:25
推 CaptainH: 不是應該用set就好了嗎 01/13 15:27
→ uranusjr: 顛倒, dataVector 裡面的東西要是 key, 然後用找出來的 01/13 15:32
→ uranusjr: 值排序(應該要寫個 compare function 會比較方便) 01/13 15:33
這方法聽起來好好用,感謝你
可是還想在請問一下
condition是:"111"、"10"、"50"、"30"、"200"
dataVec是:"10"、"111"、"200"、"50"、"800"
那這樣找出來的順序會是:2、1、5、3
我目前想到的方法是用swap不斷的交換dataVec的值
而像"800"這種不存在condition的在特別去處理,
想請問前輩的方法也差不多是這樣嗎@@?
我怕我的實作技巧反而沒辦法充分的加快速度
謝謝妳
推 BlazarArc: 我想錯了 腦袋不清楚 XD 01/13 15:33
→ BlazarArc: condition有order要求 不能用 unordered set 01/13 15:33
仔細看也發現我文章也打錯了,已經修正好了
我存成unordered_set的不是conditionVec,而是dataVec,哈哈XD
→ BlazarArc: 可以用map 保持排序 而用map的value當index, 2樓正解 01/13 15:35
也很謝謝你唷
※ 編輯: googled (203.64.91.83), 01/13/2015 15:54:57
推 BlazarArc: 不過你data的內容會重複出現嗎? 要求似乎只要標記那些 01/13 15:42
→ BlazarArc: condition 有出現在 data 裡面? 01/13 15:42
→ BlazarArc: 如果是這樣那 value type bool 用來標記就好 01/13 15:43
一筆data不會有重複的資料。
請問value type bool用來標記是什麼意思@@?
用bool來標記哪些data有出現在condition嗎?
謝謝
※ 編輯: googled (203.64.91.83), 01/13/2015 16:04:12
推 BlazarArc: 對啊 沒必要再排序吧? 01/13 16:06
→ uranusjr: 用內建的 sort 然後自己給一個 Compare object 01/13 16:06
→ uranusjr: 不存在的就給他一個超大值丟到最後面, 最後再一次清掉 01/13 16:07
→ uranusjr: 不過如果不存在的值會很多, 自己寫一個 sort 可能更好 01/13 16:10
→ googled: 成功做出來了,速度的確提升不少,感謝各位前輩 01/15 01:09