如何遍历表单对的映射<int,pair <int,int>&gt;用迭代器

时间:2017-10-20 17:17:26

标签: c++ c++11 stl hashmap

我定义了地图

map <int,pair<int,int>> hmap;

如果有pair(2,pair(3,4))如何获得2 3 4个值,itr->firstitr->second无法正常工作

2 个答案:

答案 0 :(得分:2)

  

如果有pair(2,pair(3,4))如何获取2 3 4个值[从迭代器itrmap<int,pair<int, int>>]

我想

itr->first           // 2
itr->second.first    // 3
itr->second.second   // 4

答案 1 :(得分:1)

这是一个使用迭代器和基于范围的for语句的演示程序。

#include <iostream>
#include <map>

int main()
{
    std::map<int, std::pair<int, int>> hmap{ { 1, { 2, 3 } }, { 2, { 3, 4 } } };

    for (auto it = hmap.begin(); it != hmap.end(); ++it)
    {
        std::cout << "{ " << it->first
            << ", { " << it->second.first
            << ", " << it->second.second
            << " } }\n";
    }

    std::cout << std::endl;

    for (const auto &p : hmap)
    {
        std::cout << "{ " << p.first
            << ", { " << p.second.first
            << ", " << p.second.second
            << " } }\n";
    }

    std::cout << std::endl;
}

它的输出是

{ 1, { 2, 3 } }
{ 2, { 3, 4 } }

{ 1, { 2, 3 } }
{ 2, { 3, 4 } }