Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+中以相反顺序递归打印集合+;?_C++_Recursion_Stdset - Fatal编程技术网

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()被初始化为变量,则可以通过引用传递它。在上述情况下,它是一个临时变量。