写代码易错点整理
- 变量重复声明
- 引用的swap使用
- push_back更好用
- 背包
变量重复声明
会导致越界错误,结果错误等。调试时会发现某个值突然很大,有可能是重复声明导致的。
引用的swap使用
比如一个函数中
bool func(vector<vector<int>>&presum1,vector<vector<int>>&presum2){swap(presum1,presum2);
}
这样的使用会导致presum1和presum2中下一次调用时的真正指向的数组已经swap,如果换成指针就可以避免下次调用时还是原来的。
为了在使用引用时也可以swap,可以加一个bool变量,进入这个函数时看一下是否被swap过。
bool flag = false;bool func(vector<vector<int>>&presum1,vector<vector<int>>&presum2,int a,int b,int c,int d,int n){if(flag){swap(presum1,presum2);flag = false;}//万一要执行swap操作就将flag置为true }
push_back更好用
vector中不支持二维向量使用emplace_back({2,4});这样的操作,而push_back是可以的,所以我们就只用push_back。
背包
优化空间时的第二层容量的循环,必须从大到小遍历,而不是从小到大遍历