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

Posted

技术标签:

【中文标题】stl中的C++ map::find()【英文标题】:C++ map::find() in stl 【发布时间】:2017-04-30 22:01:11 【问题描述】:
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

但我不知道如何处理二维。

【问题讨论】:

也可以考虑直接使用std::map&lt;std::pair&lt;int, int&gt;, std::string&gt; 【参考方案1】:

一次一个维度:

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

【讨论】:

【参考方案2】:

我认为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>

【讨论】:

以上是关于stl中的C++ map::find()的主要内容,如果未能解决你的问题,请参考以下文章

C++中的STL

小白学习C++ 教程二十一C++ 中的STL容器Arrays和vector

小白学习C++ 教程二十一C++ 中的STL容器Arrays和vector

C++(STL)中的连接字符串

在 C++ 中的向量中查找() stl

Visual C++ 2010 中的 STL 映射实现和线程安全