如何在 C++ 中以相反顺序递归打印集合?
How to print a set in reverse order recursively in C++?
我已尝试使用以下代码以相反的顺序打印 std::set<int>
:
#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;
}
但问题是输出没有显示任何内容。我错过了什么吗?我也知道 rbegin()
和 rend()
函数,但我只想学习以递归方式实现它。
我认为您需要通过引用而不是值来传递集合。
我已尝试使用以下代码以相反的顺序打印 std::set<int>
:
#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;
}
但问题是输出没有显示任何内容。我错过了什么吗?我也知道 rbegin()
和 rend()
函数,但我只想学习以递归方式实现它。
我认为您需要通过引用而不是值来传递集合。