【发布时间】:2019-03-01 19:52:35
【问题描述】:
我已尝试使用以下代码 sn-ps 来打印地图值的地图,但我无法访问第二个地图值。
#include <iostream>
#include <iterator>
#include <map>
#include <string>
using namespace std;
int main()
{
map< string, std::map<std::string, int> > someStorage;
//First key values
someStorage["key1"]["This Is Layer one"] = 100;
someStorage["Key1"]["This Is Layer Two"] = 120;
//second key, values
someStorage["key2"]["This Is Layer one"] = 110;
someStorage["key2"]["This Is Layer Two"] = 110;
map< string, std::map<std::string, int> > ::iterator itr;
cout << "\nThe map is : \n";
for (itr = someStorage.begin(); itr != someStorage.end(); ++itr)
{
cout << '\t' << itr->first;
//<< '\t' << (itr->second).first << '\n' <==problematic part
//<< '\t' << (itr->second).second << '\n'; <==problematic part
}
cout << endl;
return 0;
}
如何打印/访问这些值以及如何区分“这是层 一个”为“key1”和“key2”。因为我可以看到它越来越 如果我们分配 key2 值,则被覆盖,key1 具有相同的值。为什么?
我也期待下面的键值对
Key1 => {这是第一层,100} {这是第二层,120}
Key2 =>{这是第一层,110} {这是第二层,110}
.
【问题讨论】:
-
itr->second是map,而不是map::iterator。您需要以与someStorage相同的方式循环其元素。
标签: c++