这是我正在使用的数据类型。
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,但如果不是,我将如何编写我正在使用的数据类型的迭代器?
答案 0 :(得分:1)
你正在做一些非常奇怪的事情。
集合的签名是:
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>>;