set& C ++的C ++迭代器对

时间:2015-04-26 21:38:22

标签: c++ vector iterator set std-pair

我遇到了一些问题如何定义&使用迭代器。

这是我的代码的错误。

set< pair<int, pair<int,int> > > data1;
set< pair<int , pair<int,int> > > iterator it1;
// imagine set < pair x , pair < y , z >>>

vector<set <int> > data2;
set<int>::iterator it2;

vector< pair<int,int> > data3;
vector< pair<int,int> > it3;

如何用迭代器显示data1,data2,data3的内容? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这很简单......

#include <iostream>
#include <set>
#include <utility>
#include <vector>

int main() {
    std::set<std::pair<int, std::pair<int,int>>> data1;
    data1.emplace(3, std::make_pair(4, 5));
    data1.emplace(6, std::make_pair(7, 8));

    for (auto p : data1)
        std::cout << std::get<0>(p) << " " << std::get<0>(std::get<1>(p)) << " " << std::get<1>(std::get<1>(p)) << "\n";
    std::cout << "\n";

    std::vector<std::set<int>> data2;
    data2.push_back({4,5,6});
    data2.push_back({7,8,9});

    for (auto set_element : data2) {
        for (auto element : set_element)
            std::cout << element << " ";
        std::cout << "\n";
    }
    std::cout << "\n";

    std::vector<std::pair<int,int>> data3;
    data3.emplace_back(1, 2);
    data3.emplace_back(3, 4);

    for (auto p : data3)
        std::cout << std::get<0>(p) << " " << std::get<1>(p) << "\n";
    std::cout << "\n";
}

哪些输出......

3 4 5
6 7 8

4 5 6 
7 8 9 

1 2
3 4