【问题标题】:c++ find a key match in a bi-dimensional map (map of map)c++ 在二维映射(map of map)中查找键匹配
【发布时间】:2015-04-23 20:30:07
【问题描述】:

我有以下地图,用于存储客户姓名和一个带有代码和描述的项目字典,例如:

Name         Item Code, Item Description
Customer1 -> 1234,      Item 1
             1233,      Item 2
             1232,      Item 3

所以我使用以下结构:

std::map<std::string, std::map<std::string, std::string>> purchase_list;

现在我需要查找现有名称和现有项目代码。

要查找现有名称:

if (purchase_list.find(purchase_list.begin(), purchase_list.end(), "SearchName") != purchase_list.end())
   std::cout << "SeachName found!!" << std::endl;

对我来说这应该可以工作,但我在编译时遇到以下错误:

no matching function for call to ‘std::map<std::basic_string<char>, std::map<std::basic_string<char>, std::basic_string<char> > >::find(std::map<std::basic_string<char>, std::map<std::basic_string<char>, std::basic_string<char> > >::iterator, std::map<std::basic_string<char>, std::map<std::basic_string<char>, std::basic_string<char> > >::iterator, std::string&)’ search_name) == purchase_list.end())

我应该更改"SearchName" 格式吗?这里的正确语法是什么?

要搜索商品代码,我会重复相同的代码,为客户寻找找到的条目...

感谢您的帮助...

【问题讨论】:

  • 使用std::map怎么样?
  • 这不是vector 的工作方式,你需要看看here
  • 抱歉,这不是矢量 - 确实是地图。我不得不从 linux 终端复制到我的笔记本并彻底修改它......编码时间太多......
  • 你的意思是... != purchase_list.end()吗?查看完整的错误消息会有所帮助。
  • @Mendez “但是我得到“没有匹配的函数来调用 ' 编译错误...”至少发布一个 MCVE 伙计。

标签: c++ stdmap


【解决方案1】:

查找 std::map 只需要一个键值。所以你可以这样称呼它:

if (purchase_list.find("SearchName") != purchase_list.end())
     std::cout << "SearchName found!!" << std::endl;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 2012-02-26
    • 1970-01-01
    • 2013-11-28
    • 2012-02-09
    • 1970-01-01
    • 2023-02-02
    • 2012-03-10
    相关资源
    最近更新 更多