[問題] 能否從std::map推導出所需要的std::pair type?

看板C_and_CPP作者 (殺人貓™)時間12年前 (2013/08/16 17:09), 編輯推噓1(1024)
留言25則, 7人參與, 最新討論串1/1
比方說我們現在有一個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

08/16 17:14, , 1F
value_type
08/16 17:14, 1F

08/16 17:14, , 2F
其實你可以直接用make_pair
08/16 17:14, 2F

08/16 17:14, , 3F
前面的key不要const的話...pair<key_type,mapped_type>
08/16 17:14, 3F

08/16 17:16, , 4F
其實insert可以 .insert({key,value})
08/16 17:16, 4F

08/16 17:27, , 5F
insert的寫法似乎是C++11?
08/16 17:27, 5F

08/16 17:27, , 6F
value_type我試試看 感謝~ make_pair可能在我系統上
08/16 17:27, 6F

08/16 17:28, , 7F
沒辦法這樣玩,不過還是謝謝大家
08/16 17:28, 7F

08/16 17:30, , 8F
value_type應該是可以 謝謝大家 XD
08/16 17:30, 8F

08/16 19:50, , 9F
好奇make_pair怎麼樣不行?
08/16 19:50, 9F

08/16 21:27, , 10F
http://ideone.com/S54zBl make_pair 那裡不行了?
08/16 21:27, 10F

08/16 22:10, , 11F
make_pair正解 就算要自己實做一份也很簡單
08/16 22:10, 11F

08/16 22:11, , 12F
www.cplusplus.com/reference/utility/make_pair
08/16 22:11, 12F

08/17 20:36, , 13F
是我的系統架構上不適合 不是make_pair不行...
08/17 20:36, 13F

08/17 20:37, , 14F
主要是因為make_pair是執行期的東西 我需要在編譯期就
08/17 20:37, 14F

08/17 20:37, , 15F
得到一些特定的資訊 如此而已 =P
08/17 20:37, 15F

08/17 21:06, , 16F
簡單的說我需要能把pair的型別傳入template 所以必須要
08/17 21:06, 16F

08/17 21:07, , 17F
編譯期就做好這件事情。
08/17 21:07, 17F

08/17 21:07, , 18F
雖然直接硬寫pair<A,B>傳入也可 但是維護會麻煩且愚蠢
08/17 21:07, 18F

08/17 21:25, , 19F
這大概就是你的問法不對了 你原文寫這樣大家都以為是執行期
08/17 21:25, 19F

08/17 21:26, , 20F
需要的 沒有說明「要用在 template」...
08/17 21:26, 20F

08/17 21:26, , 21F
總之既然這樣的話一樓的 value_type 就行了
08/17 21:26, 21F

08/17 21:27, , 22F
的確是我例子舉得不好 =P
08/17 21:27, 22F

08/17 21:28, , 23F
我舉的例子跟我實際code是不一樣的
08/17 21:28, 23F

08/17 21:29, , 24F
附帶一提 傳map當policy進template是個非常好用的做法
08/17 21:29, 24F

08/17 21:29, , 25F
等這個告一段落再跟大家分享一下
08/17 21:29, 25F
文章代碼(AID): #1I3UnEkj (C_and_CPP)