我正在尝试编写一些覆盖<<<<对于给定集合的运算符,所以它实际上给了我“{...}”之间的集合。
template<typename T>
ostream& operator<<(ostream& out, const set<T> & v){
iterator myIt = v.begin();
out << "{";
while(myIt != v.end()-1) {
out<<*myIt<<",";
myIt++;
}
out << *myIt << "}";
return out;
}
然而,这似乎不起作用,有人愿意给我一些建议吗?
答案 0 :(得分:0)
它甚至无法正确编译。另一个问题是,你认为你的集合不是空的。
C ++ 11的设施有很多帮助:
`
template <typename T>
ostream & operator<<(ostream& out, const set<T> & v) {
string sep = "{";
for (const auto &it : v) {
out << sep << it << v;
sep = ",";
}
return out << "}";
}