仅以此篇博客来纪念本菜鸟的一次“成长“
关于用vector存取指针及相关delete问题(用序偶对解决0-1背包)
我在选用序偶对解决0-1背包时,选取的结构是vector,用vector<int*>来存放其中一个序偶对集合,用vector<vector<int *>>来存放所有序偶对集合,用一个定长为2的一维数组来存取序偶对(选取的结构可能不入大神们法眼,轻喷哈/xd)。在整个算法逻辑都正确的情况下,算法无法正确执行,大概问题如下:
在从vector<vector<int*>>读取序偶对时,明明没有对后一元素进行操作,后一元素却被改变。问题代码如下:
vector<vector<int*>>fin_ans; //用来存取所有的序偶对集合,vector<int*>是各个序偶对集合,里面存放序偶对
int a[2] = { 0,0 };
vector<int *>tem;
tem.push_back(a);
fin_ans.push_back(tem); //初始化fin_ans
for (int i = 1; i <=n; i++) {
vector<int *>temp;
vector<int *>opk = fin_ans[i - 1];
int kp = opk.size();
int km = 0;
while (kp > 0) {
int b[2];
cout << "fin_ans[" << i