C++11 使用递归对向量排序时的问题

C++11 使用递归对向量排序时的问题,c++11,recursion,vector,C++11,Recursion,Vector,我得到的是输入向量作为输出向量 代码: #包括 使用名称空间std; 无效插入(向量v,int-val){ 如果(v.size()==0 | | v[v.size()-1]您没有使用引用传递向量,这就是更改没有显示的原因 #include <bits/stdc++.h> using namespace std; void insert(vector<int> &v,int val){ // Passing vector by reference if(v.s

我得到的是输入向量作为输出向量

代码:

#包括
使用名称空间std;
无效插入(向量v,int-val){

如果(v.size()==0 | | v[v.size()-1]您没有使用引用传递向量,这就是更改没有显示的原因

#include <bits/stdc++.h>
using namespace std;
void insert(vector<int> &v,int val){ // Passing vector by reference
   if(v.size()==0 || v[v.size()-1]<=val ){
     v.push_back(val);
     return;
   }
   int x = v[v.size()-1];
   v.pop_back();
   insert(v,val);
   v.push_back(x);
   return;
}
void fun(vector<int> &v){ // Passing vector by reference
   if( v.size()==0 )
    return;
   int val = v[ v.size()-1 ];
   v.pop_back();
   fun(v);
   insert(v,val);
   return;
}
int main() {
 vector<int> v{9,4,1,-2,10,1,12,5,0,-4};
 fun(v);
 auto x= v.begin();
 for(;x!=v.end();x++)
    cout<<*x<<" ";
  }
#包括
使用名称空间std;
void insert(vector&v,int val){//通过引用传递向量

如果(v.size()==0 | | v[v.size()-1],为了让我们知道为什么会出错,我们首先必须知道什么是对的。您从未告诉我们您要完成什么。您的所有函数都是按值传递的,这意味着使用了向量的副本。您需要使用一个参考参数:
void fun(vector&v)
void insert(vector&v,int val)
#include <bits/stdc++.h>
using namespace std;
void insert(vector<int> &v,int val){ // Passing vector by reference
   if(v.size()==0 || v[v.size()-1]<=val ){
     v.push_back(val);
     return;
   }
   int x = v[v.size()-1];
   v.pop_back();
   insert(v,val);
   v.push_back(x);
   return;
}
void fun(vector<int> &v){ // Passing vector by reference
   if( v.size()==0 )
    return;
   int val = v[ v.size()-1 ];
   v.pop_back();
   fun(v);
   insert(v,val);
   return;
}
int main() {
 vector<int> v{9,4,1,-2,10,1,12,5,0,-4};
 fun(v);
 auto x= v.begin();
 for(;x!=v.end();x++)
    cout<<*x<<" ";
  }