【问题标题】:map of map of set of maps initialisation error地图集地图的地图初始化错误
【发布时间】:2017-08-19 03:43:45
【问题描述】:

我正在尝试初始化一个深度嵌套的散列,该散列本质上具有一个指向集合的整数键,其中集合中的每个值都应指向另一个字符串和结构映射。

在没有匹配函数插入错误的情况下无法编译。

你能帮我初始化下面的哈希吗,

#include <map>
#include <iostream>
#include <string>
#include <vector>
#include <set>



struct values
{
    std::string a;
    std::string b;
    values():a("milepost"),b("dummyval"){};
    values( std::string ab, std::string bc)
    {
        a=ab;
        b=bc;

    };
};

typedef  std::map<std::string,values> my_waysides ;

typedef  std::map <int, std::set<std::string> > groups;

typedef  std::map <std::string,my_waysides> myData;

typedef  std::map <std::string,my_waysides> myData;

int main(int argc, const char * argv[]) {

   std::map<int, std::map< std::set<std::string>,std::map<std::string,my_waysides>> > stringStringMap;

   my_waysides  m_wayside1,m_wayside2,m_wayside3;

   myData data1;
   data1.insert( std::make_pair("7893" , m_wayside1) );


    stringStringMap.insert(std::make_pair(1,std::make_pair("ET", data1)));

    stringStringMap.insert(std::make_pair(1,std::make_pair("PT", data1)));

}

数据集前:

   1=>PT=>"789235"=>{milepost,dummyval}
   1=>PT=>"789234"=>{milepost,dummyval}
   1=>PT=>"789237"=>{milepost,dummyval}
   1=>PT=>"789238"=>{milepost,dummyval}
   1=>ET=>"789235"=>{milepost,dummyval}
   1=>ET=>"789234"=>{milepost,dummyval}
   1=>ET=>"789237"=>{milepost,dummyval}
   1=>ET=>"789238"=>{milepost,dummyval}
   2=>PT=>"789235"=>{milepost,dummyval}
   2=>PT=>"789234"=>{milepost,dummyval}
   2=>PT=>"789237"=>{milepost,dummyval}
   2=>PT=>"789238"=>{milepost,dummyval}
   2=>ET=>"789235"=>{milepost,dummyval}
   2=>ET=>"789234"=>{milepost,dummyval}
   2=>ET=>"789237"=>{milepost,dummyval}
   2=>ET=>"789238"=>{milepost,dummyval}

谢谢 光辉

【问题讨论】:

  • std::mapception
  • 不管修复你可能遇到的任何语法错误,这里还有一个更严重的问题:map&lt;int, map&lt;set&lt;string&gt;, map&lt;string, std::map&lt;std::string,values&gt;&gt;&gt;&gt; 几乎可以肯定是一个设计错误。我建议在此处发布此内容以及您要解决的问题的描述:codereview.stackexchange.com - 然后在此问题上添加评论并附上该帖子的链接。我相信我们可以帮助您制定出更好的结构。
  • @JohnZwinck:我已经发布了数据集,我正在尝试从这个输出中创建一个 xml。我先发布子问题
  • @LearningCpp:我看到你已经在codereview.stackexchange.com/questions/158899/… 上发布了它——但是你犯了再次讨论语法错误的错误,而我认为你应该讨论的更像是“这里是我正在尝试解决的问题,这是我打算使用的数据结构 - 这合理吗?”
  • @JohnZwinck 这就是问题所在,我只是无法插入并试图获得成功,如果可能的话,请建议改进​​

标签: c++ c++11 hash std stdmap


【解决方案1】:

std::map&lt;key, value&gt; 存储带有std::pair&lt;const key, value&gt; 的节点。

在构建配对时,您可能会遗漏一个或多个 const

【讨论】:

  • 这看起来不对。 std::map,std::map<:string>> > stringStringMap 。示例数据集也已发布
  • 映射声明看起来正确,插入的问题是您尝试使用非常量键插入对,但 insert 期望 map::value_typepair&lt;const key, value&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2012-11-07
相关资源
最近更新 更多