繁体   English   中英

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

[英]Printing vector of sets in c++

反正有可以轻松打印集合向量的方法吗?

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

我已经将集合添加到向量中,是否仍然可以将其打印出来?

这只是一个概念证明,最终我将向此向量添加更多的集合,因此理想情况下,我将需要从向量的开头到结尾进行打印

谢谢

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

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

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

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;

您可以将它们直接打印为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM