stl中的C ++ map :: find()

时间:2017-04-30 22:01:11

标签: c++ dictionary stl find

map <int, map<int, string>> DP;
if( DP.find( ? ) != DP.end() )
{
    // have found
}

如何填写()。它看起来像两个维度。我知道如何处理一个维度,例如:

map<int, string> DP;
if( DP.find(1) != DP.end() )
{
    // have found
}

但我不知道如何处理两个方面。

2 个答案:

答案 0 :(得分:1)

一次一个维度:

auto it1 = DP.find(1);
if (it1 != DP.end()) {
  auto it2 = it1->find(2);
  if (it2 != it1->end()) {
    // found: it2->second
  }
}

答案 1 :(得分:0)

我认为 Kerrek SB 的代码存在一点问题。访问第二(内部)维度的方式应该是这样的:

auto OuterIter = DP.find(1);
if (OuterIter != DP.end())
{
    auto InnerMap  = OuterIter->second;
    auto InnerIter = InnerMap.find(0);
    if (InnerIter != InnerMap.end())
    {
        // found the second(inner) dimension element
    }
}

你可以考虑 chtz 的建议:您也可以考虑直接使用std :: map,std :: string&gt;