Как рекурсивно распечатать набор в обратном порядке на C ++? - PullRequest
1 голос
/ 08 июля 2020

Я пробовал следующий код, чтобы напечатать 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(), но я просто хочу научиться реализовывать их рекурсивным способом.

1 Ответ

2 голосов
/ 08 июля 2020

Я думаю, вам нужно передавать набор по ссылке, а не по значению.

...