![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习与记录
文章平均质量分 50
C++学习与记录
老歌老听老掉牙
机械工程师一枚,希望结交志同道合的朋友,互相学习。
展开
-
Visual Studio 2022 快速注释代码
在 Visual Studio 2022 中,可以使用快捷键来快速注释或取消注释代码。原创 2024-04-10 20:27:12 · 2147 阅读 · 0 评论 -
C++引用python代码
要在C++中引用Python代码,可以使用CPython库,这是Python的官方扩展库,允许C++代码与Python代码进行交互。原创 2024-04-02 22:16:09 · 571 阅读 · 0 评论 -
python如何引用C++代码?
等库,但是由于C++的复杂性和Python的动态特性,这样的调用可能并不直接。一种常见的方法是使用C++提供的外部C接口,将C++代码编译为共享库(shared library),然后在Python中使用。接下来,我们需要创建一个包含上述代码的共享库。确保在执行Python脚本之前,已经成功编译了C++代码并生成了共享库。请注意,上述Python脚本中使用的函数命名约定是将C++中的。在Python中引用C++代码通常需要使用。以下是一个简单的示例,假设有一个C++类。是你的Python头文件的路径。原创 2024-04-02 22:13:57 · 508 阅读 · 0 评论 -
C++之调用Python
将项目中的libs目录中python39.lib复制一份,改名为python39_d.lib,附加依赖项的内容填写C:\Users \AppData\Local\Programs\Python\Python39\libs\python39_d.lib;Python安装目录下的include目录加入头文件目录。Visual Studio2022中操作路径是:属性–> C/C++ -> 常规-> 附加包含目录。Visual Studio中操作路径是:属性–> 链接器 -> 常规 -> 附加包含目录。原创 2024-04-01 22:31:00 · 178 阅读 · 0 评论 -
C++之循环中使用auto关键字
最后,总结一下:auto关键字的使用可以极大地提高代码的可读性和编写效率,特别是在处理STL容器、模板元编程和复杂的类型表达式时。在C++中,auto是一个类型说明符,用于自动推导变量的类型。编译器会根据初始化表达式的类型来自动推断变量的类型。使用auto可以使代码更加简洁,并减少手动键入类型信息的需要,尤其是在处理复杂类型或模板时。在C++中,使用auto关键字与基于范围的for循环(range-based for loop)是一种简洁的遍历容器(如数组、向量、列表等)或集合中元素的方法。原创 2024-03-24 17:02:11 · 228 阅读 · 0 评论 -
cmake
add_executable(可执行程序名 源文件名称)原创 2024-03-11 23:51:03 · 983 阅读 · 0 评论 -
C++之Qt执行耗时操作导致界面卡顿的解决办法
使用更高效的排序算法:排序是计算中常见的任务,不同排序算法的时间复杂度可能从O(n)到O(n^2)不等。将耗时操作分解为多个较小的任务,并使用多线程或异步操作逐个执行这些任务,是一种非常有效的策略,用于提高应用程序的响应性和用户体验。在C++中使用Qt框架时,执行耗时操作可能会导致界面卡顿,因为耗时操作会阻塞主线程(通常是GUI线程),从而无法及时响应用户输入或更新界面。当面对复杂的计算任务或大量的数据处理时,选择适合的算法和数据结构能够显著减少计算时间,从而提高程序的响应速度和整体性能。原创 2024-03-10 20:25:18 · 855 阅读 · 0 评论 -
C++之创建与使用dll
DLL,全称“Dynamic Link Library”,中文名为“动态链接库”,是一种在Windows操作系统中常见的库文件格式。与静态链接库(Static Link Library,.lib文件)不同,动态链接库在程序运行时才被加载到内存中,因此可以节省内存空间,并允许程序在不重新编译的情况下更新库文件。然而,使用DLL也需要注意一些问题,如DLL的依赖管理、版本冲突以及安全性等。通过更新DLL文件,可以在不重新编译整个应用程序的情况下更新程序的功能。创建mydll工程,移除默认文件,添加以下文件。原创 2024-03-08 22:06:39 · 627 阅读 · 0 评论 -
C++之进程管理
而进程是程序在处理机上的一次执行过程,它是一个动态的概念,有一定的生命期。在C++中,获取Windows进程的PID(进程标识符)通常涉及到使用Windows API函数来枚举系统中的进程,并检查每个进程的名称或其他属性以确定所需的PID。结束进程在计算机操作系统中指的是关闭或终止正在运行的程序或进程。进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,也是操作系统结构的基础。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。原创 2024-03-07 23:59:49 · 1272 阅读 · 0 评论 -
Visual Studio 2022之Release版本程序发送到其它计算机运行
这通常意味着将 DLL 文件复制到与可执行文件相同的目录中,或者将它们安装到目标计算机上的系统目录(如 C:\Windows\System32 或 C:\Windows\SysWOW64)中。Visual Studio 提供了创建安装项目(如 MSI 安装包)的功能,这可以帮助自动部署您的应用程序及其依赖项。确保在发布版本中选择适合的配置。如果程序使用了特定的运行时环境(如 .NET Framework、Visual C++ Redistributable 等),请确保目标计算机上也安装了这些运行时环境。原创 2024-03-07 21:32:53 · 1508 阅读 · 0 评论 -
C++之注册表启动项操作
注册表启动项是Windows系统配置的重要组成部分,用于初始化系统环境、加载必要的服务和驱动程序,以及运行用户自定义的启动程序。例如,它们可能会使电脑在启动时花费更长的时间,因为无效的项会尝试启动但无法正常运行。此外,某些恶意软件可能会创建无效的注册表启动项,以在启动时自动运行,从而危害计算机安全性。在Windows启动时,注册表启动项会确保关键的系统服务和驱动程序被正确加载,从而确保操作系统的正常运行。通过修改注册表启动项,用户和管理员可以灵活地管理系统的启动配置,优化系统性能,或者满足特定的安全需求。原创 2024-03-06 23:54:06 · 1283 阅读 · 0 评论 -
C++之获取Windows系统信息
通过结合SDL和Visual Studio的编译时检查,开发人员可以在编译阶段就发现和修复潜在的安全漏洞。在Visual Studio中启用SDL检查后,编译器会执行一系列额外的安全检查,以确保代码符合安全性和隐私保护的最佳实践。通过启用SDL检查,开发人员可以在整个开发过程中实现更高的安全性和隐私保护水平。在C++中,你可以使用Windows API函数来获取Windows系统的各种信息。在C++中,你可以使用Windows API函数GetComputerName来获取Windows计算机的名称。原创 2024-03-06 23:02:40 · 1082 阅读 · 0 评论 -
C++之获取当前程序的路径、Windows目录的路径和系统目录的路径
对于Windows,系统目录通常位于C:\Windows\System32(对于32位系统)或C:\Windows\SysWOW64(对于64位系统中的32位应用程序)。例如,如果你的程序名为MyApp.exe,并且它位于C:\Program Files\MyApp\目录下,那么当前程序的路径就是C:\Program Files\MyApp\MyApp.exe。这个头文件用于输入/输出流,尽管在这段代码中它并没有被用到,因为所有路径的打印都是通过`wprintf`完成的,而不是`std::cout`。原创 2024-03-05 23:16:57 · 2691 阅读 · 0 评论 -
C++之bit field
【代码】C++之bit field。原创 2024-03-04 18:43:23 · 441 阅读 · 0 评论 -
C++之vector用法
可以简单的认为,向量是一个能够存放任意类型的动态数组。15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值。2.pop_back 去掉数组的最后一个数据。5.end 得到数组的最后一个单元+1的指针。7.back 得到数组的最后一个单元的引用。)是一个封装了动态大小数组的顺序容器(10.size 当前使用数据的大小。原创 2024-02-27 19:39:38 · 382 阅读 · 0 评论 -
C++之素数
【代码】C++之素数。原创 2024-02-21 19:29:13 · 390 阅读 · 0 评论 -
C++之随机数
rand() 函数返回一个在 0 到 RAND_MAX 范围内的随机整数,而 srand() 函数用于设置随机数生成器的种子。生成 [0, 1] 范围内的随机浮点数:rand() / double(RAND_MAX)。生成 [a, b) 范围内的随机整数:(rand() % (b - a)) + a。生成 (a, b] 范围内的随机整数:(rand() % (b - a)) + a + 1。生成 [a, b] 范围内的随机整数:(rand() % (b - a + 1)) + a。原创 2024-02-20 22:48:56 · 382 阅读 · 0 评论 -
C++之正确代码复制到Visual Studio 2022报错
如果你从其他地方复制代码,例如从网页或使用不同编辑器的项目中,这些代码可能使用不同的字符编码格式(如UTF-8、ISO-8859-1等)。如果源代码文件的字符编码与Visual Studio 2022的默认编码设置不匹配,可能会导致解析错误或乱码。在复制代码过程中,如果源代码文件经过了某种形式的转换(例如从网页下载、使用文件转换工具等),可能会导致原始的字符编码信息丢失或损坏。在复制代码之前,仔细检查并确保没有非标准或特殊字符的存在,这些字符可能会干扰字符编码的处理。这样设置之后并没有什么用。原创 2024-02-03 23:49:35 · 630 阅读 · 0 评论 -
B样条基函数
其中,ui称为节点,U称为节点矢量,用Ni,p(u)表示第i个p次(p+1阶)B样条基函数,其定义为。(2)在任意给定的节点区间[uj,uj+1)内,最多p+1个Ni,p是非零的,它们是Nj-p,p,…(1)Ni,0(u)是一个阶梯函数,它在半开区间u∈[ui,ui+1)外都为零;(4)(规范性)对于任意的节点区间[ui,ui+1),当u∈[ui,ui+1)时。(1)(局部支撑性)如果u∉[ui,ui+p+1),则Ni,p(u)=0。(3)(非负性)对于所有的i,p和u,有Ni,p(u)≥0。原创 2024-01-31 18:57:05 · 789 阅读 · 0 评论 -
C++之Qstring转Standard_Cstring
【代码】C++之Qstring转Standard_Cstring。原创 2024-01-30 18:47:41 · 502 阅读 · 0 评论 -
C++之获取一段代码运行的时间
请按任意键继续. . .原创 2024-01-30 18:39:03 · 349 阅读 · 0 评论 -
C++版QT:分割窗口
Qt的分割窗口功能允许用户将一个窗口分割成多个区域,每个区域可以独立地显示不同的内容。这种功能在许多应用程序中非常有用,例如编辑器、浏览器和IDE等。在Qt中,窗口通常由一个主窗口(QWidget)和其子部件(widgets)组成。分割窗口就是将这个主窗口分割成多个子窗口(通常也是QWidget),每个子窗口可以独立地移动、调整大小和显示内容。Qt提供了一个特殊的部件叫做QSplitter,用于实现窗口的分割。原创 2024-01-26 23:24:19 · 828 阅读 · 0 评论 -
C++版QT:获取窗体位置
在Qt中,窗体(通常是一个QWidget或其子类的实例)的位置和显示区域可以通过几种方式来获取。原创 2024-01-24 21:00:15 · 1487 阅读 · 1 评论 -
C++之内联函数
当函数被声明为 inline 时,编译器会尝试将该函数的代码直接插入到调用该函数的地方,而不是在运行时通过函数调用来执行。函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还要将函数的返回地址(该地址指明了函数执行结束后,程序应该回到哪里继续执行)放入栈中,最后才跳转到函数内部执行。这个过程是要耗费时间的。另外,函数执行 return 语句返回时,需要从栈中回收形参和局部变量占用的存储空间,然后从栈中取出返回地址,再跳转到该地址继续执行,这个过程也要耗费时间。原创 2024-01-24 20:42:43 · 405 阅读 · 0 评论 -
C++版QT:电子时钟
【代码】C++版QT:电子时钟。原创 2024-01-22 22:38:53 · 599 阅读 · 0 评论 -
C++版QT:鼠标事件
鼠标常用的事件可以说有一下几种:鼠标按下、鼠标移动、鼠标移动、鼠标双击和鼠标滚轮事件。当你想使用他们,需要包含头文件:#include <QMouseEvent>鼠标左键:Qt::LeftButton鼠标中键:Qt::MidButton鼠标右键:Qt::RightButton。原创 2024-01-22 22:32:48 · 1047 阅读 · 0 评论 -
C++之void*指针
下面是一个使用void*类型的示例代码:在这个示例中,我们定义了三个变量a、b和c,然后将它们的地址分别赋给了三个void类型的指针pInt、pDouble和pChar。接着,我们将这些void类型的指针转换为对应的指针类型,并输出它们指向的数据。需要注意的是,在使用void*类型的指针时,需要进行类型转换,以确保指针指向正确的数据类型。这段代码是一个头文件的预处理指令,用于定义一个名为Aspect_Handle的类型。根据不同的操作系统,Aspect_Handle的定义也不同。请按任意键继续. . .原创 2024-01-22 22:19:49 · 586 阅读 · 0 评论 -
C++之类的声明
同一个类可以多次声明。在 C++ 中,类的声明通常放在头文件(.h)中,而类的定义则放在源文件(.cpp)中。但是需要注意的是,每个源文件中的类声明必须与头文件中的类声明完全一致,包括类名、成员函数和成员变量等。虽然这些类的定义可能在其他文件中,但是在当前文件中使用它们之前,需要先进行声明。QUnifiedToolbarSurface:统一工具栏表面对象,用于在 Qt 的工具栏中显示统一风格的工具栏。QGraphicsProxyWidget:图形代理部件对象,用于在 Qt 的图形框架中显示其他部件。原创 2024-01-22 22:16:35 · 423 阅读 · 0 评论 -
C++之函数名后面的const
在这个例子中,internalWinId() 和 effectiveWinId() 都被声明为 const,这意味着它们不能修改调用它们的对象的状态。如果这些函数试图修改对象的状态,编译器将报错。在 C++ 中,函数名后面加上const 关键字表示该函数不会修改对象的成员变量(除非成员变量是mutable的)。这是一种良好的编程习惯,可以提高代码的安全性和可读性。此外,由于这些函数没有修改对象的状态,因此它们可以在 const 对象上调用。原创 2024-01-22 22:05:57 · 1180 阅读 · 0 评论 -
C++之类型定义
第一个类型别名是 quintptr,它表示一个无符号整数类型,大小为指针的大小(通常是 8 字节或 4 字节,取决于不同的系统)。它的定义方式是使用宏 QT_PREPEND_NAMESPACE 将 quintptr 转换成前缀命名空间的形式,即 ::quintptr。第二个类型别名是 WId,它也是表示一个无符号整数类型,但实际上是 quintptr 类型的别名。它的定义方式同样是使用宏QT_PREPEND_NAMESPACE 将 WId 转换成前缀命名空间的形式,即 ::WId。原创 2024-01-22 22:01:11 · 393 阅读 · 0 评论 -
C++ 中的位域(bit field)定义方式
但是需要注意的是,位域只能用于整型数据类型,而且每个位域变量的取值范围必须是固定的。位域(bit field)是 C++ 中一种特殊的数据类型,它可以用来定义一个或多个二进制位的变量。在位域中,每个二进制位都有自己的存储空间,可以单独进行读写操作。一个无符号整型变量,占用 4 个二进制位。一个无符号整型变量,占用 4 个二进制位。一个无符号整型变量,占用 1 个二进制位。一个无符号整型变量,占用 1 个二进制位。一个无符号整型变量,占用 1 个二进制位。一个无符号整型变量,占用 1 个二进制位。原创 2024-01-22 21:55:43 · 495 阅读 · 0 评论 -
Open CASCADE学习|Aspect_Handle.h头文件
在 Windows 系统中,HANDLE是一个指向对象的指针类型,而 Aspect_Handle 则被定义为 HANDLE 类型的别名。这意味着,在 Windows 系统中使用 Aspect_Handle 类型时,其行为与使用 HANDLE 类型相同。在非 Windows 系统中,Aspect_Handle被定义为 unsigned long 类型。这意味着,在非Windows 系统中使用 Aspect_Handle 类型时,其行为与使用 unsigned long 类型相同。原创 2024-01-22 21:50:03 · 461 阅读 · 0 评论 -
C++之创建对象
如果你直接使用等号(=)来创建一个对象,那么编译器会在栈上为该对象分配内存。但是,栈上的内存大小是有限的,如果试图在栈上分配超过其容量的空间,程序将崩溃。此外,栈上的内存生命周期与函数的生命周期相同,这意味着你不能在函数外部访问栈上的对象。当你使用 new 关键字来创建一个对象时,你实际上是在堆上分配了内存空间,并返回了一个指向该内存空间的指针。然而,这也意味着你需要手动管理内存,包括释放不再需要的对象以防止内存泄漏。new创建类对象需要指针接收,一处初始化,多处使用。原创 2024-01-18 23:27:12 · 844 阅读 · 0 评论 -
C++之引用
由于swap函数使用了引用,因此在函数调用时不会复制x和y的值,而是直接修改它们的值。在C++中,函数参数中的引用是一种特殊的变量,它是另一个变量的别名。同时,引用在函数内部可以像普通变量一样使用,并且对引用进行修改会影响到原始变量。在C++中,引用是一个别名,它是另一个变量的名称。引用的使用方式是在声明时将变量名放在圆括号内,并在引用前加上&符号。同时,引用不能被重新赋值,即引用一旦绑定到一个变量,就不能再指向其他变量。引用的使用方式与普通变量相同,但是在函数调用时不需要复制引用所指向的对象。原创 2024-01-18 23:24:57 · 384 阅读 · 0 评论 -
C++之接口
Shape 是一个基类,它定义了两个数据成员 width 和 height,以及一个纯虚函数 getArea() 和两个成员函数 setWidth() 和 setHeight()。在C++中,接口的概念并不是语言本身的一部分,但可以通过抽象类来实现类似的功能。接口是一种定义了某些方法但不实现这些方法的抽象类型,这些方法可以在任何实现该接口的类中被实现。纯虚函数是在基类中声明但没有实现的虚函数,它需要在派生类中被实现。接口描述了类的行为和功能,而不需要完成类的特定实现。原创 2024-01-18 23:22:15 · 535 阅读 · 0 评论 -
C++创建窗口程序
实现一个基本的 Windows 应用程序,使用 C++ 和 WinAPI(Windows API)编写。运行这段代码时,它将显示一个标题为“Hello World”的窗口,并且可以通过关闭窗口来结束程序。原创 2024-01-17 23:59:55 · 1404 阅读 · 0 评论 -
参数曲线之幂基曲线
给定u0,计算幂基曲线上的点C(u0)的最有效算法是英国数学家W.G.Horner提出的Horner方法。Horner算法是递归概念的一个典型实例,它采用最少的乘法来进行多项式求值,使计算由X^n问题转化为O(n)的问题。通过交互式操作,用户可以调整曲线的系数,从而改变曲线的形状。1、幂基曲线表示用于形状设计时,不够自然,系数只能呢个传递很少的关于曲线形状的直观几何影响。2、在数值计算时,如果幂基曲线表示的阶数太大,Horner算法易受到舍入误差的影响。原创 2024-01-17 23:54:38 · 436 阅读 · 0 评论 -
Open CASCADE学习|显示模型
库文件和头文件同以前。原创 2024-01-16 23:55:44 · 802 阅读 · 0 评论 -
Open CASCADE学习|QT5.12.10实现可视化
调试过程发现,无论怎么修改OCC的库文件,总是报错找不到xxx.dll文件,我是采用如下方法解决的:将OCC的库文件下的所有dll文件拷贝到该QT项目的Debug目录下,也就是生成exe的目录下。添加OCC的库文件与头文件。添加QT的库文件与头文件。原创 2024-01-16 22:15:51 · 559 阅读 · 0 评论 -
Visual Studio 2022 成功配置QT5.12.10
下载社区版并安装,这个比较快。官网下载很慢,还不如百度网盘。链接:https://pan.baidu.com/s/1UCB17G0dDf66cOLSgrtW_w提取码:0nnwQT账号:3508551694@qq.comQT账号密码:C++123456安装目录自己设置勾选 “ MSVC2017 64-bit ”(只需要勾选这一个即可!勾选 “ Qt Creator 4.13.1 ” (默认勾选,此为IDE,我们会用这个来开发)其它默认即可。官网很慢,国内镜像直接下载下载完之后,先关闭VS。原创 2024-01-16 22:01:57 · 2317 阅读 · 0 评论