- 博客(66)
- 收藏
- 关注
原创 Hierholzer 算法
Hierholzer算法是寻找欧拉回路/通路的高效方法,由Carl Hierholzer于1873年提出。该算法首先需要判断图是否满足欧拉条件:无向图要求所有顶点度数为偶数(回路)或恰有两个奇数(通路);有向图要求入度等于出度(回路)或满足特定出入度差(通路)。算法通过深度优先遍历构建路径,当遇到死胡同时回溯并将顶点加入结果,最终形成逆序的欧拉回路。其时间复杂度为O(|E|),适用于有向图和无向图。
2025-10-31 14:14:48
810
原创 std::iota
std::iota是C++标准库中用于生成连续递增序列的算法,定义在<numeric>头文件中。它通过前向迭代器指定范围,从给定初始值开始依次填充递增序列。支持整数、浮点数和字符等多种数据类型,可配合vector、list、array等容器使用。典型应用包括生成索引序列、初始化部分数组元素、与其他算法结合等。std::iota具有代码简洁、执行高效、避免越界错误的优点,但需确保目标范围足够且迭代器类型支持。该算法特别适合需要顺序填充的场景,能显著提升代码可读性和性能。
2025-10-24 11:30:32
445
原创 QString提取末尾的数字部分,并执行自加
本文介绍了在Qt/C++中使用正则表达式处理字符串末尾数字的方法。通过QRegularExpression匹配字符串末尾的数字,使用捕获组提取数字并转换为整数,加1后替换原字符串中的数字部分。代码示例展示了从"Part_123"到"Part_124"的转换过程,并详细解释了正则表达式构造、匹配检测、数字转换和替换操作。文章还指出了常见问题,如反斜杠转义、无尾数字情况、数字长度变化处理、整数溢出等注意事项,为开发者提供了完整的解决方案和优化建议。
2025-10-14 15:09:26
392
原创 QCAD 二次开发:将多个 RShape 放入同一 Block(群组)并统一选中
QCAD中实现群组化选择和撤销的核心机制是通过RBlock和RTransactionGroup配合完成的。RBlock用于创建包含多个图元的逻辑单元,所有图元共享局部坐标系;RTransactionGroup则将创建块、添加图元和插入引用等多个操作合并为一个事务。具体实现步骤包括:创建事务组、定义块、添加图元并设置块ID、插入块引用,最后结束事务组。这样用户点击任意图元即可整体选中群组,且撤销时只需一次操作即可回退所有相关步骤。该机制有效提升了操作效率和用户体验。
2025-10-14 15:00:10
411
原创 Qt手撸控件不显示问题
猜想是不是之前没有调用centralWidget导致几个控件被其覆盖了问题,把控件放置在centralWidget里就可以正。今天写一个简单的几个测试按钮时发现无法显示在界面上,开始的代码是这样的。发现是无法显示的,然后修改了最后一行成这样。
2025-02-12 18:26:17
332
原创 如何在 OpenCascade 中计算点是否在几何体内部
使用类可以判断一个点是否在 3D 几何体的内部。TopAbs_IN表示点在内部,TopAbs_ON表示点在表面,TopAbs_OUT表示点在外部。
2025-02-11 10:56:11
618
原创 std::accumulate
适用于对容器中的元素进行累计操作,默认为加法操作。可以自定义操作,如求积、最大值、最小值等。是一个非常常用且强大的函数,适用于多种数据类型的容器,提升代码简洁性和可读性。
2025-01-16 09:19:27
657
原创 函数指针(新特性)
在 C++ 中,函数指针虽然是一个传统的特性,但随着 C++11 及以后的版本,出现了一些新的特性和写法,使得函数指针的使用变得更为灵活和强大。auto在 C++11 引入了auto关键字,可以简化函数指针的声明,避免显式指定函数指针的类型,尤其是当函数的类型较复杂时,这使得代码更加简洁和易于维护。是 C++11 引入的一个模板类,它可以存储任意可调用对象,包括普通函数、函数指针、Lambda 表达式和仿函数。相比于传统的函数指针,更加灵活,且能够更好地与泛型和 STL 容器兼容。
2025-01-15 11:46:30
464
原创 std::transform
单参数版本:适用于需要对容器中每个元素执行相同操作的情况,通常会用来指定转换操作。双参数版本:适用于需要将两个容器中的元素配对并执行操作的情况,通常用来指定两个元素的组合操作。是一种功能强大且灵活的工具,可以用于各种转换和操作,不论是对单个容器,还是对多个容器之间的元素进行组合操作。
2025-01-07 16:04:08
765
原创 std::span
std::span是一个非常有用的类型,它使得在 C++ 中处理连续内存块的操作变得更加简洁和高效。使用std::span可以减少内存拷贝,同时提高代码的可读性和灵活性,特别是在处理数组或容器时。如果你正在编写需要高效处理大规模数据的代码,std::span是一个非常合适的选择。
2025-01-07 15:22:03
748
原创 std::inner_product实现两个数组对应位置的乘积求和
是 C++ 标准库中的一个算法函数,它可以用来计算两个序列(容器、数组等)对应位置元素的乘积之和。它不仅可以进行普通的内积计算(乘积求和),还可以支持用户提供的自定义乘法和加法操作。定义在
2024-11-27 17:03:46
598
原创 错误的理解Qt的当前目录
在为了方便别人使用本项目时,同时不需要改本项目中使用的路径问题时,想把代码中的所有绝对路径改成基于项目的相对路径。想到相对路径的写法时 ./ 误以为此时的相对路径结果为当前项目编写的代码所在的文件夹比如。我以为的相对路径是D:\QtProject\MyTest\。其实结果不是如此,真正的相对路径是整个项目编译的所在位置。
2024-11-21 15:26:24
318
1
原创 gp_Ax2使用注意
今天在使用gp_Ax2过程中,在建立坐标系的时候会出现偶发性的崩溃问题,后来仔细检查的自己的代码主要是没有先设置主轴的方向(Z轴),而先设置了X轴的方向导致崩溃。修改后:后来查了一下chatGpt如下:在 OpenCASCADE 中,gp_Ax2是一个用来表示坐标系的类,包含一个位置点(gp_Pnt)和两个方向向量(gp_Dir),通常用于定义一个坐标系或一个方向性。当调用gp_Ax2的方法时,确实需要先设置主要方向(gp_Dir),然后再设置局部坐标系的 X 和 Y 方向。这个顺序非常重要,因为。
2024-11-12 14:49:42
404
原创 QString中isNull和isEmpty区别
isEmpty()判断的是一个字符串的size而空格符是一个大小为0的字符串。一个NULL字符串一定是一个空字符串,一个空字符串不一定是一个NULL字符串。
2024-10-18 08:57:15
329
原创 opencascade鼠标拖拽框选功能
1.首先在OccView中添加用于显示矩形框的类。3.在鼠标移动的事件中添加新的事件。4.在鼠标释放事件中清空框选。
2024-10-09 11:30:31
814
原创 错误 LNK2019: unresolved external symbol 表示编译器在编译时找到了对函数 printTypeof<double>(double const &) 的引用,但在链接时
确保模板函数的定义和声明都在头文件中。如果定义必须放在.cpp文件中,使用显式实例化模板函数。
2024-09-20 11:35:05
618
原创 std::any_of
是 C++ 标准库中的一个算法,用于检查给定范围中的任何元素是否满足特定条件。它适用于需要检查一个容器中是否至少有一个元素满足某个条件的场景。这个算法在头文件中定义的语法。
2024-08-28 16:56:51
913
原创 emplace
在容器的插入操作中,emplace通常是一个更高效的选择,特别是在需要构造新对象的情况下。尽管如此,insert和其他插入方式在某些场景下仍然是合适的选择。最好的做法是根据具体的场景和需求,选择最能表达意图且性能最优的插入方式。
2024-08-28 15:47:13
479
原创 OpenCasCade中遍历边获取边的方向时候注意事项
当时看到这个结果就蒙蔽了,在官方的说明里不是说按照一个方向顺着来的吗,请教了我的同事告诉了我一个接口。可以看出有两条线段是反向的,因此,如果想到得到一个顺序的方向需要自己自行旁段,然后把得到的方向转一下。这个是OCC里面的一个接口,通过该接口就可以知道线段是不是反向的。主要的坑是,遍历一个face的所有边的时候,通过。希望给遇到同样问题的人一点帮助。这边可以得到一个正确的顺序了。
2024-08-22 15:54:33
449
原创 vcpkg integrate install
安装的库自动集成到 Visual Studio 中。这个命令的作用是让 Visual Studio 自动识别。安装的库,不需要手动配置库路径和包含路径,非常方便。提供的一个命令,用于将。
2024-08-09 14:27:52
630
1
原创 gp_Trsf和Ncollection_Mat4获得值注意:
Ncollection_Mat4开始得索引值时0,是一个四行四列得矩阵。gp_Trsf在获取值得时候索引开始时1,是一个三行四列得矩阵。
2024-07-29 10:10:50
419
原创 六、C++11常用新特性—返回值类型后置(auto于decltype的联合使用示例)
C++11常用新特性—返回值类型后置(auto于decltype的联合使用示例)
2024-07-09 13:52:15
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅