在c ++中打印集合的向量

时间:2014-04-17 10:39:35

标签: c++ vector set

无论如何都可以轻松打印套装矢量?

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

int main ()
{
  std::set<int> myset;
  std::vector<std::set<int> > setVector;
  int myints[] = {5,10,15};
  int elementCount = sizeof(myints) / sizeof(myints[0]);
  myset.insert(myints, myints + elementCount);
  setVector.push_back(myset);
  std::cout << "Elements in vector: " << setVector.size() << " \n";
}

我已将该集添加到向量中,无论如何要打印出来吗?

这只是一个概念证明,最终我会在这个向量中添加更多的集合,所以理想情况下我需要从向量的开头打印到结尾

谢谢

4 个答案:

答案 0 :(得分:4)

使用嵌套的基于范围的循环(由C ++ 11引入)很容易实现:

for(std::set<int> const &mySet : setVector){
  for(const int i : mySet){
    std::cout << i << " ";
  }
}

Example

答案 1 :(得分:1)

您可以查看我的(仅标题)to_string库。

答案 2 :(得分:1)

std::ostream& operator<<(std::ostream& os, const std::set<int>& s) {
    std::copy(s.begin(), s.end(), 
        std::ostream_iterator<int>(os,","));
    return os;
}

template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& s) {
    os << "{";
    typename std::vector<T>::const_iterator it = s.begin();
    for( ; it != s.end(); ++it)
        os << *it;

    os << "}";
    return os;
}

然后你可以做

std::cout << setVector;

答案 3 :(得分:1)

您可以直接打印出来:

for(int i=0;i<setVector.size();i++)
{
      for(set<int>::iterator iter=setVector[i].begin();iter!=setVector[i].end();iter++)
}