上机错误点随笔
1.输入处理有严重 Buga.resize(s1.size()); // 先 resize 为 s1.size()全部初始化为0while(l--)a.push_back(s1[l]-0); // 又在尾部 push_back导致前面全是0问题resize后再push_back会导致数组前面有一堆0数据长度翻倍且高位在前。修正// 方法1直接 push_back不要 resize for(int i s1.size() - 1; i 0; i--) a.push_back(s1[i] - 0); // 方法2用 resize 后赋值推荐 a.resize(s1.size()); for(int i 0; i s1.size(); i) a[i] s1[s1.size() - 1 - i] - 0; // 低位在前存储2.关于引用参数的问题当前写法vectorint add(vectorint a, vectorint b)✅ 可以运行但效率低建议写法vectorint add(const vectorint a, const vectorint b)✅ 更方式说明值传递vectorint a会复制整个数组O(n) 开销引用传递const vectorint a不复制只读访问O(1) 开销高精度计算中数组可能很长几百位建议用引用避免拷贝开销。// 1. 值传递会拷贝修改不影响原值 void f1(vectorint a) { a.push_back(999); } // 原a不变 // 2. 引用传递不拷贝修改会影响原值⚠️ void f2(vectorint a) { a.push_back(999); } // 原a被修改 // 3. const 引用传递不拷贝且禁止修改✅ void f3(const vectorint a) { // a.push_back(999); // ❌ 编译错误无法修改 }vectorint a; // 全局变量 // 1. 修改全局 a参数无用误导性极强❌ void f4(vectorint param) { a.push_back(1); } // 2. 明确修改全局 a无参数意图清晰⚠️ void f3() { a.push_back(1); } // 3. 修改传入的参数正常使用引用✅ void f5(vectorint x) { x.push_back(1); // 改的是传入的实参 } int main(){ f4(a); // ✅ 这里 a 是全局变量 vectorint a,b; // ❌ 从这里开始局部 a 屏蔽了全局 a f4(a); // 传的是局部 a但函数里改的还是全局 a f4(b); // 传的是 b但函数里改的还是全局 a }3.if(b1)是 C/C 中判断整数是否为奇数的经典写法。表达式含义b 1按位与运算b的二进制最低位与1比较b 1 1结果为 1真→b是奇数b 1 0结果为 0假→b是偶数
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411196.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!