[英]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.