我正在创建一张地图。地图工作正常。我需要提取特定索引的字符(用于另一个计算)。 地图代码如下:
//site index, val type, num of val
typedef map<int, pair<char, int> > Maptype;
Maptype my_map;
for (i=0; i<SIZE; i++){ //create the system
char Type = 's';
int Count = 10;
//insert to map
my_map.insert( make_pair( i, make_pair(Type, i*Count)));
}
现在,我正在尝试提取特定索引的字符。如果我有两个元素,我可以使用下面的元素。但有三个要素,我无法找到解决方案。请帮助:)
for(auto &i: my_map)
cout << i.second << endl;
答案 0 :(得分:4)
使用my_map
对auto
进行迭代可获得键值对。在您的情况下,密钥为int
,值为另一个std::pair
。
i.second
是键值对的值,因此它也是std::pair
,只需执行i.second.first
即可获得Type
和{{1}的值} i.second.second
。
您可能需要考虑在此处使用i*Count
,因为您似乎没有修改任何内容并且不打算这样做。此外,const auto &i
刷新流缓冲区,如果在循环中完成,则可能会很昂贵。只需使用std::endl
。
答案 1 :(得分:3)
i.second
将在您的循环中为pair<char, int>&
类型。
因此,要访问整数,只需使用cout << i.second.second << endl;
。