2011-04-06 83 views
13

將兩個值映射到一個鍵的最佳方式是什麼?std ::映射一個鍵,兩個值

即一個值和布爾值的項目。

嘗試使用:

std::map<std::string, std::pair<std::string, bool> > myMap2 

但是這似乎並不像正確的解決方案。有沒有更優雅的方式來做到這一點?

+7

'std :: pair <>'就好了。你關心什麼? – Keith 2011-04-06 01:37:59

回答

7

這確實是正確的解決方案。更一般地說,考慮使用std::tuple而不是std::pair作爲統一接口,而不管值的數量多少(因爲std::pair明顯限制爲兩個),或者如果編譯器太老以至於不能實現std::std::tr1::實現,則使用boost::tuple

+0

元組是...感謝 – JonnyCplusplus 2011-04-06 01:55:37

+2

或者一個結構體,當你的元組開始失控時... – 2011-04-06 08:23:43

+1

@Steve:...當元組包含兩個以上的項目時。 :)嚴重的是,當元組的內容不是以同樣的方式打印或者以某種明顯的方式構造時,元組會促進不可讀的代碼。代碼說'iter-> second.get <6>()'是討厭的。 – 2011-04-06 12:30:47

6

按照您的操作使用std::pair<>,或者創建一個包含要存儲的值的自定義結構。我會在大多數情況下做後者,因爲這些值的名稱比firstsecond更具描述性。

1

通常,我創建一個簡單的mapValue結構體/類。

相關問題