无论如何都可以轻松打印套装矢量?
#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";
}
我已将该集添加到向量中,无论如何要打印出来吗?
这只是一个概念证明,最终我会在这个向量中添加更多的集合,所以理想情况下我需要从向量的开头打印到结尾
谢谢
答案 0 :(得分:4)
使用嵌套的基于范围的循环(由C ++ 11引入)很容易实现:
for(std::set<int> const &mySet : setVector){
for(const int i : mySet){
std::cout << i << " ";
}
}
答案 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++)
}