看板 C_and_CPP 關於我們 聯絡資訊
比方說我們現在有一個map typedef std::map<std::string, callback> CB_MAP; 能否從CB_MAP推導出需要的std::pair<std::string, callback>? 類似 typedef CB_MAP::???? CB_MAP_PAIR; CB_MAP map; map.insert(CB_MAP_PAIR("hello world!", somethingCB)); 而不用 map.insert(std::pair<std::string, callback>("hello world!", somethingCB)); 我是有看到一個名字看起來很疑似的 std::map::_Pair_alloc_type 不過顯然這個一來是內部用的 二來他也不是std::pair 有什麼方法(除了macro以外)可以從std::map推導出pair? 畢竟連iterator形態都可以推導出來了,STL應該是有放個能推導pair的才是吧 =P -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.251.135
suhorng:value_type 08/16 17:14
CaptainH:其實你可以直接用make_pair 08/16 17:14
suhorng:前面的key不要const的話...pair<key_type,mapped_type> 08/16 17:14
suhorng:其實insert可以 .insert({key,value}) 08/16 17:16
Killercat:insert的寫法似乎是C++11? 08/16 17:27
Killercat:value_type我試試看 感謝~ make_pair可能在我系統上 08/16 17:27
Killercat:沒辦法這樣玩,不過還是謝謝大家 08/16 17:28
Killercat:value_type應該是可以 謝謝大家 XD 08/16 17:30
adxis:好奇make_pair怎麼樣不行? 08/16 19:50
diabloevagto:http://ideone.com/S54zBl make_pair 那裡不行了? 08/16 21:27
AntaresStar:make_pair正解 就算要自己實做一份也很簡單 08/16 22:10
AntaresStar:www.cplusplus.com/reference/utility/make_pair 08/16 22:11
Killercat:是我的系統架構上不適合 不是make_pair不行... 08/17 20:36
Killercat:主要是因為make_pair是執行期的東西 我需要在編譯期就 08/17 20:37
Killercat:得到一些特定的資訊 如此而已 =P 08/17 20:37
Killercat:簡單的說我需要能把pair的型別傳入template 所以必須要 08/17 21:06
Killercat:編譯期就做好這件事情。 08/17 21:07
Killercat:雖然直接硬寫pair<A,B>傳入也可 但是維護會麻煩且愚蠢 08/17 21:07
LPH66:這大概就是你的問法不對了 你原文寫這樣大家都以為是執行期 08/17 21:25
LPH66:需要的 沒有說明「要用在 template」... 08/17 21:26
LPH66:總之既然這樣的話一樓的 value_type 就行了 08/17 21:26
Killercat:的確是我例子舉得不好 =P 08/17 21:27
Killercat:我舉的例子跟我實際code是不一樣的 08/17 21:28
Killercat:附帶一提 傳map當policy進template是個非常好用的做法 08/17 21:29
Killercat:等這個告一段落再跟大家分享一下 08/17 21:29