將兩個值映射到一個鍵的最佳方式是什麼?std ::映射一個鍵,兩個值
即一個值和布爾值的項目。
嘗試使用:
std::map<std::string, std::pair<std::string, bool> > myMap2
但是這似乎並不像正確的解決方案。有沒有更優雅的方式來做到這一點?
將兩個值映射到一個鍵的最佳方式是什麼?std ::映射一個鍵,兩個值
即一個值和布爾值的項目。
嘗試使用:
std::map<std::string, std::pair<std::string, bool> > myMap2
但是這似乎並不像正確的解決方案。有沒有更優雅的方式來做到這一點?
這確實是正確的解決方案。更一般地說,考慮使用std::tuple
而不是std::pair
作爲統一接口,而不管值的數量多少(因爲std::pair
明顯限制爲兩個),或者如果編譯器太老以至於不能實現std::
或std::tr1::
實現,則使用boost::tuple
。
元組是...感謝 – JonnyCplusplus 2011-04-06 01:55:37
或者一個結構體,當你的元組開始失控時... – 2011-04-06 08:23:43
@Steve:...當元組包含兩個以上的項目時。 :)嚴重的是,當元組的內容不是以同樣的方式打印或者以某種明顯的方式構造時,元組會促進不可讀的代碼。代碼說'iter-> second.get <6>()'是討厭的。 – 2011-04-06 12:30:47
按照您的操作使用std::pair<>
,或者創建一個包含要存儲的值的自定義結構。我會在大多數情況下做後者,因爲這些值的名稱比first
和second
更具描述性。
通常,我創建一個簡單的mapValue結構體/類。
'std :: pair <>'就好了。你關心什麼? – Keith 2011-04-06 01:37:59