2013-05-22 68 views
0

獲得第二予有C++:地圖<wstring的,wstring的>從第一

map <wstring,wstring>. 

我已插入對這樣的:

m_Translations.Content().insert(pair<wstring,wstring>(L"rome",L"roma")); 
m_Translations.Content().insert(pair<wstring,wstring>(L"water",L"aqua")); 

我怎樣才能確定平移從 「水」地圖?換句話說:我想從第一個項目中獲得第二個項目。 搜索區分大小寫。

謝謝你的幫助!

+2

'wstring的S = m_Translations.Content()[L 「水」] ;' –

+0

@AlexFarber:如果缺失,您可能不想插入空白條目。 –

+0

@Mike西摩 - 這是作爲評論張貼的提示和完整答案之間的區別。 –

回答

4

有點奇怪問題。使用operator[]訪問地圖的默認方式是什麼?

wstring aqua = m_Translations.Content()[L"water"]; 

如果你不能確定翻譯是否存在,則可以與find方法檢查它:

const auto& dict = m_Translations.Content(); 
auto pAqua = dict.find(L"water"); 

if (pAqua != dict.end()) 
{ 
    // Found it! 
} 
else 
{ 
    // Not there... 
} 
+0

謝謝。這是什麼「汽車」? – tmighty

+1

這是一個C++ 11風格。這意味着變量類型是從初始化表達式自動推導出來的。你可以用顯式的類型聲明重寫它。 – Mikhail

+0

爲什麼不使用'at'方法?如果沒有元素存在指定的鍵,則會拋出異常。 – soon

3

您可以使用operator[]可在std::map

例如:

map<wstring, wstring> myMap = m_Translations.Content(); 

myMap.insert(pair<wstring, wstring>(L"rome", L"roma")); 
myMap.insert(pair<wstring, wstring>(L"water", L"aqua")); 

// waterText value would be 'aqua' 
wstring waterText = myMap[L"water"];