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<<" ";
}