我正在为整数实现一个置换函数。它有“vector double free or corruption (out)”的运行时错误。
使用gdb,一步步调用后,迭代结束后崩溃。
但我真的很难找出问题所在。
#include <vector>
using namespace std;
class Permute {
public:
vector<vector<int> > vv;
// interface
vector<vector<int> > permute(vector<int> &num) {
vector<int> v(0);
doPermute(v, num);
return vv;
}
// recursive function to permute
void doPermute(vector<int> v, vector<int> &num) {
if(num.empty()) {
vv.push_back(v);
// on gdb, if next after the above one, it is fine,
// but crashes after the following next
} else {
for (int i = 0; i < num.size(); i++)
{
int toAdd = num[i];
vector<int> rest(num);
rest.erase(num.begin()+i);
vector<int> prefix(v);
prefix.push_back(toAdd);
doPermute(prefix, rest);
}
}
}
};
int main(){
Permute pInst;
// sample to test with {1}
vector<int> vt (1, 1);
pInst.permute(vt);
}