如何遍历两对 STL set<pair<t1,t2>,pair<t1,t2>> 中的所有元素?

How can I loop through all the elements in a two pair STL set<pair<t1,t2>,pair<t1,t2>>?

这是我使用的数据类型。

  set< std::pair<string,string>,std::pair<string,string>> foo;

这是我循环遍历失败的尝试

for(auto &e: foo){
    cout << e.first << " " << e.second // this is where I am having an issue.
}

这样使用auto可以吗? 例如

e.first, e.second // some c++ magic (i realize -> is wrong)  In pseudo -> //  e.third ...

我很想使用 auto,但如果不是,我该如何为我正在使用的数据类型编写迭代器?

你正在做一些非常奇怪的事情。

集合的签名是:

template<
    class Key,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<Key>
> class set;

所以您使用 std::pair<std::string, std::string> 作为比较器。一插入就会编译失败

但我很确定这不是您想要的。

你可能想要

map<pair<string, string>, pair<string, string>>;

set<pair<pair<string, string>, pair<string<string>>>;

或者也许

set<tuple<string, string, string, string>>;