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