在地图中存储标准地图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在地图中存储标准地图相关的知识,希望对你有一定的参考价值。

我必须将std :: map存储为std :: map中的值

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

如何插入第二个(内部)地图?我尝试过:

someStorage.insert( std::make_pair("key", std::make_pair("key2", "value2")) );

但这会引发很多错误。怎么了?

答案

尝试:

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

someStorage["Hi"]["This Is Layer Two"] = "Value";
另一答案
someStorage["key"].insert(std::make_pair("key2", "value2")));

如果你仍然想在外部地图上使用insert,这是一种方法

std::map<std::string, std::string> inner;
inner.insert(std::make_pair("key2", "value2"));
someStorage.insert(std::make_pair("key", inner));
另一答案

映射具有接受键/值对的插入方法。你的密钥是字符串类型,所以这没问题,但你的值不是类型对(你生成的),而是类型map。因此,您需要将完整的地图存储为值,或者更改初始地图定义以接受一对作为值。

另一答案

//试试这个:

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

myMap["key one"]["Key Two"] = "Value";
myMap["Hello"]["my name is"] = "Value";

//要打印地图:

for( map<string,map<string,string> >::const_iterator ptr=myMap.begin();ptr!=myMap.end(); ptr++) {
    cout << ptr->first << "
";
    for( map<string,string>::const_iterator eptr=ptr->second.begin();eptr!=ptr->second.end(); eptr++){
        cout << eptr->first << " " << eptr->second << endl;

    }

}
另一答案

您还可以使用列表初始化:

someStorage.insert( std::make_pair("key", std::map<std::string, std::string> {std::make_pair("key2", "value2")}) );

以上是关于在地图中存储标准地图的主要内容,如果未能解决你的问题,请参考以下文章

使用片段的谷歌地图

谷歌地图片段内的片段可以操纵我的地图

Android:在drawerlayout中使用地图膨胀片段时出错

如何在滚动视图中设置谷歌地图片段

片段中的 Xamarin Android Google 地图错误

恢复片段后android地图停止响应