2013-05-22 98 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"];