当前位置: 首页 > news >正文

打工人日报#20250828

打工人日报#20250828

人终究会变成自己讨厌的样子
很讨厌别人在我认真干活的时候,突然大叫自己的名字,把自己吓得一哆嗦
今天,和同事讨论一个需求,不是很理解,需要其他同事协助,很不想动,我也大叫别人,说需要帮助,哎,叫完之后警觉自己现在的样子
不想动可以打电话呀、发消息呀!!!

知识点

#include <QList>
#include <QPoint>
#include <iostream>// 假设我们有一个简单的处理逻辑,将每个点的坐标值翻倍
bool test1(QList<QPoint>& pts) {for (QPoint& point : pts) {point.setX(point.x() * 2);point.setY(point.y() * 2);}return true;
}bool test2(QList<QPoint> pts) {QList<QPoint> newPts;for (const QPoint& point : pts) {newPts.append(QPoint(point.x() * 2, point.y() * 2));}// 这里可以将新的点列表做其他处理,目前简单返回truereturn true;
}bool test3(QList<QPoint>& pts, QList<QPoint>& newpts) {for (const QPoint& point : pts) {newpts.append(QPoint(point.x() * 2, point.y() * 2));}return true;
}QList<QPoint> test4(QList<QPoint> pts) {QList<QPoint> newPts;for (const QPoint& point : pts) {newPts.append(QPoint(point.x() * 2, point.y() * 2));}return newPts;
}int main() {QList<QPoint> points;points.append(QPoint(1, 1));points.append(QPoint(2, 2));QList<QPoint> newPoints;test1(points);std::cout << "After test1: ";for (const QPoint& point : points) {std::cout << "(" << point.x() << ", " << point.y() << ") ";}std::cout << std::endl;test2(points);std::cout << "After test2 (original points unchanged): ";for (const QPoint& point : points) {std::cout << "(" << point.x() << ", " << point.y() << ") ";}std::cout << std::endl;test3(points, newPoints);std::cout << "After test3 (new points in newPoints): ";for (const QPoint& point : newPoints) {std::cout << "(" << point.x() << ", " << point.y() << ") ";}std::cout << std::endl;QList<QPoint> result = test4(points);std::cout << "After test4 (result in result variable): ";for (const QPoint& point : result) {std::cout << "(" << point.x() << ", " << point.y() << ") ";}std::cout << std::endl;return 0;
}

函数区别

test1(QList& pts):

接受 QList 的引用作为参数。
直接修改输入的点列表 pts 中的点。

test2(QList pts):

接受 QList 的值作为参数,这意味着会创建 pts 的一个副本。
在函数内部创建一个新的点列表 newPts,对副本中的点进行处理并存储在 newPts 中,但不返回新列表。

test3(QList& pts, QList& newpts):

接受两个 QList 的引用,一个是输入的点列表 pts,另一个是用于存储处理后点的输出列表 newpts。
不修改输入的点列表 pts,而是将处理后的点添加到 newpts 中。

test4(QList pts):

接受 QList 的值作为参数,创建 pts 的副本。
在函数内部创建一个新的点列表 newPts,对副本中的点进行处理,并返回这个新的点列表。

优缺点分析

test1:

优点:
效率高,因为直接操作输入的列表,避免了创建新列表和数据复制的开销。
代码简洁,对于简单的就地修改操作很方便。
缺点:
会修改输入参数,可能不符合某些调用者的预期,尤其是当调用者希望输入数据保持不变时。
缺乏灵活性,如果需要保留原始数据并获取修改后的数据,就不太适用。

test2:

优点:
输入参数不会被修改,保证了输入数据的完整性。
缺点:
效率较低,因为创建了 pts 的副本,并且没有返回处理后的新列表,导致处理结果无法直接使用,除非在函数内部进行更复杂的操作来处理新创建的列表。
代码相对冗余,因为创建了新列表但没有有效利用其结果。

test3:

优点:
输入参数不会被修改,保证了输入数据的完整性。
通过输出参数 newpts 返回处理结果,适用于需要在函数外部使用处理后数据的情况,同时避免了返回值带来的潜在性能开销(如返回大型对象时的复制操作)。
缺点:
调用者需要预先创建并传递一个空的 newpts 列表,增加了调用者的负担。
函数接口相对复杂,需要传递两个参数,不够简洁。

test4:

优点:
输入参数不会被修改,保证了输入数据的完整性。
直接返回处理后的新列表,使用方便,调用者可以直接使用返回值进行后续操作。
缺点:
性能方面,创建了 pts 的副本以及新的返回列表,可能存在性能开销,尤其是处理大型列表时。
返回大型对象时,可能会有较大的复制开销,尽管现代编译器可能会进行返回值优化(RVO)。

阅读

《学会提问》
第八章:证据的效力:个人观察和调查研究
以研究报告作为证据可靠吗?
首先明白科学研究强调可重复性、控制和精确性
其次需要明白,科学研究也不是绝对正确,也可能存在质量不好、成果相互冲突、科研人员也存在自己的价值观偏见等问题
最后,在这个复杂的世界,不存在百分百的“准确性”,但是我们也不能因为不是百分百正确的东西,就断言它是错误的。
在这里插入图片描述

感恩

今天同事带我们去了一个新地方吃饭,只是一些小摊,但是在这“偏远地区”,很不错了!

http://www.dtcms.com/a/354902.html

相关文章:

  • HTTP 分块传输编码:深度解析与报文精髓
  • 第21节:环境贴图与PBR材质升级——构建电影级真实感渲染
  • Java 实现HTML转Word:从HTML文件与字符串到可编辑Word文档
  • 腕上智慧健康管家:华为WATCH 5与小艺的智美生活新范式
  • 使用EasyExcel实现Excel单元格保护:自由锁定表头和数据行
  • mac电脑双屏显示时程序坞跑到副屏的解决方法
  • 吱吱企业通讯软件以安全为基,搭建高效的通讯办公平台
  • ckman部署的clickhouse,节点迁移
  • 微算法科技(NASDAQ:MLGO)推出创新型混合区块链共识算法,助力物联网多接入边缘计算
  • [论文阅读] 人工智能 + 软件工程 | 告别“隐藏陷阱”:领域预训练模型SmartBERT如何赋能智能合约安全
  • MyBatis题
  • AR培训系统:油气行业的安全与效率革新
  • List<Map<String, String>>最简单的遍历方式
  • 在Ubuntu中安装配置MySql Server
  • [光学原理与应用-320]:光学产品不同阶段使用的工具软件、对应的输出文件
  • 计算机考研408《数据结构》真题模拟——数据结构与算法基本概念
  • DQN(深度Q网络):深度强化学习的里程碑式突破
  • Java 线程池拒绝策略
  • vscode pyqt5设置
  • 基于SpringBoot的老年人健康数据远程监控管理系统【2026最新】
  • JavaSE——八股文
  • 医院信息系统(HIS)的开发架构解析,代码示例
  • 面试tips--并发--进程与线程的区别线程通信方式总结
  • k8s集群1.20.9
  • 虚拟相机的最佳实践参考是什么
  • k8s是什么?
  • docker和k8s的区别
  • Android 开发 - 数据共享(数据共享、内容提供者实现、动态权限申请)
  • 面试记录7 c++软件开发工程师
  • Flask测试平台开发实战-第二篇