C++ 如何在C+中以相反顺序递归打印集合+;?
我尝试了以下代码以相反顺序打印C++ 如何在C+中以相反顺序递归打印集合+;?,c++,recursion,stdset,C++,Recursion,Stdset,我尝试了以下代码以相反顺序打印std::set: #include <iostream> #include <vector> #include <iterator> #include <algorithm> #include <list> #include <map> #include <utility> #include <set> #include <stack> using nam
std::set
:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>
#include <map>
#include <utility>
#include <set>
#include <stack>
using namespace std;
void setRecursivePrinting(set<int> s, set<int>::iterator it)
{
int x;
x = *it;
it++;
if (it != s.end())
{
setRecursivePrinting(s, it);
}
cout << x << '\t';
}
int main()
{
set<int> s;
s.insert(44);
s.insert(2);
s.insert(10);
s.insert(8);
s.insert(100);
setRecursivePrinting(s, s.begin());
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
void setRecursivePrinting(集合s,集合::迭代器)
{
int x;
x=*它;
it++;
如果(it!=s.end())
{
设置递归打印(s,it);
}
cout我认为你需要通过引用而不是通过值来传递集合。你想通过引用来传递集合,比如……你一直在复制它。如果集合是空的,你的代码就会失败。现在我可以理解我错过了什么。我所需要做的就是通过引用来传递集合。谢谢!只通过引用来发送集合就足够了ence。通过引用发送迭代器无法编译。请解释这是一个问题的原因。如果s.begin()被初始化为变量,则可以通过引用传递它。在上述情况下,它是一个临时变量。