迭代一组

时间:2014-11-19 20:34:53

标签: iterator set overloading operator-keyword ostream

我正在尝试编写一些覆盖<<<<对于给定集合的运算符,所以它实际上给了我“{...}”之间的集合。

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;
}

然而,这似乎不起作用,有人愿意给我一些建议吗?

1 个答案:

答案 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 << "}";
 }