会导致越界错误,结果错误等。调试时会发现某个值突然很大,有可能是重复声明导致的。
比如一个函数中
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
}
vector中不支持二维向量使用emplace_back({2,4});这样的操作,而push_back是可以的,所以我们就只用push_back。