- 博客(98)
- 收藏
- 关注
原创 C++——基础
值传递:在函数调用时,会触发一次参数的拷贝动作,所以对参数的修改不会影响原始的值。如果是较大的对象,复制整个对象,效率较低。引用传递:函数调用时,函数接收的就是参数的引用,不会触发参数的拷贝动作,效率较高,但对参数的修改会直接作用于原始的值。看两种传递方式的示例代码:值传递引用传递1.3 深入理解1.3.1什么场景下使用引用传递?避免不必要的数据拷贝:对于比较大的对象参数(比如std:vector、std:string、std:list),因为拷贝会导致大量的内存和时间开销。而引用传递可以避免这
2025-09-30 22:34:55
729
原创 某企业牛笔试题——写对了2个半
一、栈配对符号配对给定一个包含括号(()、[]、{})和其他字符(如数字)的字符串,判断其中的括号是否有效。有效括号需满足以下条件:每个左括号必须有对应的同类型右括号闭合。左括号必须以正确的顺序闭合(例如 ([)] 是无效的,而 ()[]{} 是有效的)。其他字符(如数字)不影响判断,可直接忽略。
2025-09-29 16:50:46
394
原创 VTK入门
优点:开源免费、兼容性极强、支持复杂数据结构、跨平台通用;缺点:ASCII 格式文件体积大,对于超大规模数据(如亿级网格),读写效率不如专用二进制格式(如 HDF5)。总之,VTK 格式凭借其通用性和灵活性,成为科学计算可视化领域的事实标准之一,尤其在 CFD/CAE 后处理中,是连接不同软件工具的重要桥梁。优点:开源免费、功能全面、算法成熟、跨平台、支持多语言,适合从简单可视化到复杂定制化工具的开发。缺点。
2025-08-24 00:39:05
1296
原创 C++——分布式
分布式” 是计算机科学和软件工程中的一个核心概念,指的是将一个大型系统或任务拆解为多个部分,通过多个独立的计算节点(如服务器、计算机)协同工作来完成,节点之间通过网络进行通信和协调。
2025-08-15 22:37:11
965
原创 剑指offer第2版——面试题3:数组中重复的数字
哈希表法更通用,实现简单,适合大多数场景;二分查找法空间更优,但依赖题目特定条件(数字范围 0~n-1),是对 “利用隐含条件” 考点的延伸。两种方法均满足 “不改变原数组” 的要求,核心是在时间与空间复杂度之间做权衡。
2025-08-12 18:03:27
1010
原创 剑指offer第2版——面试题1:赋值运算符函数
异常安全性原则(Exception Safety Guarantees)是 C++ 中处理异常的重要设计准则,它定义了函数在发生异常时应保证的程序状态,确保即使出现异常(如内存分配失败、操作无效等),程序也不会出现资源泄漏、数据损坏或对象处于无效状态等问题。基本保证(Basic Guarantee):核心要求:当异常发生后,程序能保持有效状态(所有对象的不变式仍成立,资源未泄漏),但对象的具体状态可能不可预测(不一定是异常发生前的状态)。示例。
2025-08-07 22:01:59
969
原创 C++——系统编程(Posix API)
POSIX API 的全称是 “Portable Operating System Interface for Unix”(可移植操作系统接口)。 它是由 IEEE 制定的一系列标准,定义了类 Unix 操作系统应提供的接口规范,包括系统调用、库函数等,目的是提高不同 Unix 类系统之间的兼容性和应用程序的可移植性。 遵循 POSIX 标准的系统(如 Linux、macOS、FreeBSD 等)提供的 API 具有高度一致性,使得遵循该标准编写的程序可以在这些系统上无需大量修改就能运行。C++ 系统编程中
2025-08-07 17:28:23
1052
原创 C++——并发编程
线程有且只有两种状态:结合状态和分离状态。在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。在默认情况下线程是可结合的(joinable),这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。当
2025-08-06 20:17:33
1213
原创 Pimpl惯用法
将类的私有成员(数据和方法)从头文件移到实现文件中,用户只能看到接口,无法知晓具体实现。:头文件不再包含私有成员的定义,当实现细节变化时,依赖该类的代码无需重新编译。:类的二进制接口(ABI)更加稳定,即使内部实现变化,只要公共接口不变,链接时就不会出现问题。
2025-08-04 21:03:27
290
原创 C++——设计模式
面向对象的优点和缺点面向对象的三大特点设计模式的六大原则单例模式(线程安全)工厂方法模式适配器模式代理模式观察者模式策略模式备忘录模式模板模式状态模式责任链模式装饰模式命令模式
2025-08-04 20:08:03
1101
原创 Qt数据和视图分离——中MCV和MVVM
MVC 是一种非常流行的设计模式,广泛用于Web应用程序和桌面应用程序开发。通过将用户界面与业务逻辑清晰分离,MVC 提供了一个灵活和高效的开发方式,有助于构建可维护和可扩展的应用程序。MVVM(Model-View-ViewModel)是一种软件架构模式,主要用于构建用户界面,尤其在需要双向数据绑定的应用程序中非常常见。MVVM 模式通过分离关注点,提高了代码的可维护性和可测试性。它将应用程序分为三个主要组件:模型(Model)、视图(View)和视图模型(ViewModel)。MVVM。
2024-08-07 19:21:41
2141
1
原创 C++回顾——虚析构
虚析构函数的引入是为了确保在从基类指针删除派生类对象时能够正确调用派生类的析构函数,以便完成资源清理,维护程序的健壮性和安全性。通过这一机制,C++ 提供了一种可靠的方式来管理多态性带来的复杂性,增强了面向对象编程的灵活性和可维护性。
2024-08-01 15:53:08
720
原创 C++回顾——多态
编译时多态和运行时多态是为了满足不同编程需求而设计的多态性机制。编译时多态多用于类型静态已知的场合,如函数重载和模板,以增强性能和类型安全。而运行时多态则为程序提供了灵活性和可扩展性,是实现多态行为的主要手段,特别是在使用继承和多态时。
2024-07-31 20:23:08
1239
原创 C++关键字——explicit
在C++中,explicit:使用explicit关键字修饰构造函数可以防止编译器进行隐式类型转换。如果一个构造函数被声明为explicit,则在使用该构造函数进行对象初始化时,必须显式地调用构造函数,禁止隐式类型转换。:有时候隐式类型转换可能导致一些意想不到的行为,使用explicit关键字可以避免这种情况的发生,增强代码的安全性和可读性。:在类的设计中,使用explicit关键字可以明确构造函数的用途,表明该构造函数只能用于显式地创建对象,而不能通过隐式类型转换来创建对象。举例来说,如果一个类。
2024-03-12 20:55:42
474
原创 跨平台代码编写规范——参考《Loup&卡普》的文档
平台上的MSVC编译器比较宽松,部分错误编译器会自动纠正或者忽略,但是Linux下gcc/g++编译器相对严格,且运行库,环境同。Windows下可编译的代码,直接在Linux下编译会产生很多问题,我们通过制定一定的跨平台代码编写规范来杜绝这些问题。
2023-10-17 17:05:57
539
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅