基于c++模板写一个组合算法问题
运行结果为什么输出的前两个值为0,调试的时候查看没有向vector中存放0,求指教,下面附上代码。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template <class T>
class Combine
{
public:
void combine(vector<T> a,vector<T> &result,typename vector<T>::iterator begin,int num);
};
template <class T>
void Combine<T>::combine(vector<T> a,vector<T>& r,typename vector<T>::iterator begin,int num)
{
if(a.size()==0)
{
cout<<" 要组合的数组为空."<<endl;
return;
}
if(num==0)
{
for_each(r.begin(),r.end(),[](T i)
{
cout<<i<<" ";
});
cout<<endl;
}
r.push_back(*begin);
combine(a,r,++begin,num-1);
r.pop_back();
combine(a,r,++begin,num);
}
int main()
{
vector<int> a;
int n;
cout<<" 请输入元素的个数:"<<endl;
cin>>n;
for(int i=0;i<n;++i)
{
int t;
cin>>t;
a.push_back(t);
}
int num;
cout<<" 请输入要选择的个数:"<<endl;
cin>>num;
Combine<int> c;
vector<int> r(num,0);
(a,r,a.begin(),num);
return 0;
}