C ++如何打印此映射std :: map <int,pair <vector <pair <int,=“”int =“”>&gt;,int&gt;&gt; </int,>

时间:2014-02-06 18:45:01

标签: c++

我想在地图中打印对,如:

std::map<int, pair<vector<pair<int, int>>, int>> Mymap;

此地图中的数据示例:

Mymap[0] = (0, ({ { 1, 3 }, { 1, 5 } }, 4))
Mymap[1] = (1, ({ { 2, 3 }, { 3, 7 }, { 1, 3 } }, 8))

我想打印像:

{ 1, 3 }, { 1, 5 } 
{ 2, 3 }, { 3, 7 }, { 1, 3 } 

2 个答案:

答案 0 :(得分:0)

所以,一个好的第一步是实际编写示例数据,使其与您请求的类型相匹配。

也许是这样的:

Mymap[0] = {{{1, 3}, {1, 5}}, 4};
Mymap[1] = {{{2, 3}, {3, 7}, {1, 3}}, 8};

然后,我们可以很容易地迭代这个......

#include <map>
#include <vector>
#include <iostream>

int main() {
    std::map<int, std::pair<std::vector<std::pair<int, int>>, int>> Mymap;

    Mymap[0] = {{{1, 3}, {1, 5}}, 4};
    Mymap[1] = {{{2, 3}, {3, 7}, {1, 3}}, 8};

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

哪个输出:

{1, 3}, {1, 5}, 
{2, 3}, {3, 7}, {1, 3}, 

答案 1 :(得分:0)

我的问题没有任何意义,你到底想要做什么?

无论如何,这段代码应该能够做到:

    std::map<int, pair<vector<pair<int, int>>, int>> Mymap;
    Mymap[0] = {{{1, 3}, {1, 5}}, 4};
    Mymap[1] = {{{2, 3}, {3, 7}, {1, 3}}, 8};
    map<int, pair<vector<pair<int, int>>, int>>::iterator it;
    for (it=Mymap.begin(); it!=Mymap.end(); it++){
        pair<vector<pair<int, int>>, int> myPair=it->second;
        vector<pair<int, int>> myVec=myPair.first;
        for (int i=0; i<myVec.size(); i++){
            cout<< "{ " << myVec[i].first << ","<<myVec[i].second<< " }, ";

        }
        cout<<endl;
    }