- 博客(66)
- 资源 (17)
- 收藏
- 关注
原创 CMake学习
cmake预先定义好的变量,关于构建环境、源文件目录、目标架构等。cmake set定义变量的PARENT_SCOPE用法,希望这个函数变量计算结果返回到函数外部使用。set(ENV{变量名} 变量值)如果一个环境变量指向一个库路径,在cmake里读这个环境变量。# 读取环境变量 MY_LIBRARY_PATH# 检查是否成功读取# 使用该路径链接库在 CMake 中,我们可以通过自定义构建规则和目标来满足项目中一些特殊的构建需求,比如生成特定格式的文件、执行脚本等。
2025-01-07 18:18:02
736
原创 c++查看运行时类型,f(X&& val)接到的类型是&&,意义为非常量左值?
右值是指那些无法获取到内存地址的值,一般出现在赋值语句的右边,如字面值常量、表达式结果、临时对象等。它们通常不具名,因此无法直接通过变量名来引用。
2024-10-23 21:43:58
277
原创 vec.emplace_back(std::move(str1));字符串变为空是std::move();的行为?还是vector::emplace_back();的行为?还是std::string
std::_Default_allocator_traits::construct(_Alloc&, _Objty* const _Ptr, _Types&&... _Args)//使用指定内存分配器,在指定地址_Ptr,拷贝内存_Args也就是str1。
2024-10-20 00:20:29
666
原创 c++中修改const变量的方法和const类成员函数修改类成员变量的方法
【代码】c++中修改const变量的方法和const类成员函数修改类成员变量的方法。
2024-09-25 16:02:01
416
原创 c++ templates常用函数
在C++中,声明是告诉编译器有关实体的信息,而定义则是创建实体并分配存储空间。当声明的结构已知时,或对于变量,必须分配存储空间时,声明就变成了定义。
2024-09-16 23:57:43
527
原创 linux使用命令行编译qt.cpp
make //从Makefile文件编译为可执行程序。qmake//从pro文件生成Makefile文件。qmake -project //生成pro文件。
2024-09-14 23:27:00
1014
原创 vs2019编译boost
自动在D:\boost_1_86_0生成lib文件,需要手工拷贝 boost_1_86_0\boost 到D:\boost_1_86_0\include。1.管理员权限运行x86_x64 Cross Tools Command Prompt for VS 2019。不需要手工拷贝include文件,会自动生成。3.有两种方法,选择一种。
2024-08-27 13:20:03
247
原创 Qt Example Callout Extention(about QChart/QGraphicsView/QGraphicsItem)
Qt Example callout 展示了在平面直角坐标系中画tips。如何在平面直角坐标系中画点、折线、圆、长方形?
2024-08-24 22:30:36
294
原创 vtkTransform PreMultiply(Default)和PostMultiply的区别
In PreMultiply mode, the translation, concatenation, etc. will occur before any transformations which are represented by the current matrix. pt * Matrix1 * Matrix2 *...In PostMultiply mode, the additional transformation will occur after any transformations
2024-08-19 15:59:48
293
原创 圆柱螺旋线、球螺旋线参数方程
在空间,一个动点M沿直线L作,同时又以等角速度绕同平面的轴线Oz旋转,M的轨迹是一条空间(非平面)曲线,称为螺旋线。它分为左旋与右旋两种。螺旋线是绕在圆柱面或圆锥面上的曲线,而它的切线与定直线(曲面的母线)的交角,是固定不变的。当动直线L平行于轴线Oz时,称为圆柱螺线。它是工程上应用最广泛的一种空间曲线,它的参数方程是:它在轴线Oz方向的投影是圆;在与轴线垂直方向的投影,是正弦曲线。
2024-08-18 10:31:10
1531
原创 希腊字母大写、小写、音标
▪Αα▪Ββ▪Γγ▪Δδ▪Εε或ϵ▪Ϝϝ▪Ζζ▪Ηη▪Θθ▪Ιι▪Κκ▪Λλ▪Μμ▪Νν▪Ξξ▪Οο▪Ππ▪Ρρ▪Σσ或ς▪Ττ▪Υυ▪Φφ或ϕ▪Χχ▪Ψψ▪Ωω。
2024-08-17 21:26:21
319
原创 ECEF地心地固坐标系与ENU站心坐标系互转
站心坐标系也叫做站点坐标系、东-北-天坐标系ENU,英文名称是local Cartesian coordinates coordinate system,主要是用于需了解以观察者为中心的其他物体运动规律。
2024-08-17 21:12:39
1227
原创 平移矩阵、点绕轴的旋转矩阵、平面直角坐标系旋转矩阵、点绕向量旋转公式(罗德里格斯旋转公式)
【代码】平移矩阵、点绕轴的旋转矩阵、平面直角坐标系旋转矩阵、点绕向量旋转公式(罗德里格斯旋转公式)
2024-08-17 20:43:28
353
原创 vtk example cube显示立方体
vtk在win10 + vs2019 + cmake 内用cmake编译了vtk9.2.6,编译成功但是运行cube的demo example程序,窗口没有显示,没有看到立方体。没有报错也没有任何输出。程序运行显示:没有任何报错、闪退、崩溃,也没有看到vtk窗口。
2024-08-17 13:47:31
370
原创 std::shared_mutex 举例
而 get_count 成员函数使用 std::shared_lock 来获取共享锁,允许多个线程同时读取 count 的值。是 C++17 引入的一个类型,它允许多个线程同时获取共享锁(shared lock),但只允许一个线程独占锁(exclusive lock)。这样,多个线程可以并发地读取共享数据,但在写入数据时,只有一个线程能够独占访问,以保证数据的一致性。而 get_count 成员函数使用共享锁,是因为它只读取 count 的值,不会修改它,因此允许多个线程并发读取。
2024-06-18 21:58:40
297
原创 c++20 std::jthread 源码简单赏析与应用
std::jthread 是 C++20 中引入的一个新特性,它是线程库中的一个类,专门用于处理。之间的交互,以支持更优雅和安全的线程停止机制。来提供一个内置的线程停止机制。旨在简化这个问题,它使用。
2024-05-21 16:24:11
517
原创 c++20 std::reinterpret_cast、std::bit_cast、std::static_cast
reinterpret_cast不能在constexpr中使用,std::bit_cast可以。reinterpret_cast是语言功能,std::bit_cast是库函数,库函数比语言功能容易支持。,用于可复制类型的二进制IO,例如将字节写入文件,再读回内存。将源对象的位解释为目标对象位,不可转为&,要求。,级别较低,不出现编译错误,问题不容易被发现。例如转为&,不支持,要求。
2024-05-12 21:58:46
598
原创 std::shared_ptr实现和线程安全
是的,控制块是线程安全的;但是不,对资源的访问不是线程安全的。这意味着,修改引用计数器是一个原子操作,您可以保证资源将被删除一次。如果多个执行线程在没有同步的情况下访问同一个shared_ptr对象,并且这些访问中的任何一个使用shared_ptr的非常量成员函数,则将发生数据竞赛;4.c++委员会对std::shared_ptr源代码有什么要求?重新用模版实现,增加一些严谨的类型判断stl模版函数,原子变量的引用计数。2.shared_ptr是不是线程安全的?1.计数器是不是线程安全的?
2024-05-12 01:21:10
457
原创 c++20 shared_ptr、unique_ptr、weak_ptr、enable_shared_from_this
可判断已关联的shared_ptr是否已释放;构造时使用shared_ptr或weak_ptr,使用.lock();代替实现:(如果没有public std::enable_shared_from_this有效的方法是将weak_ptr作为成员变量,返回以weak_ptr创建的shared_ptr):安全的返回指向this的shared_ptr或weak_ptr。需求:在类成员函数实现封装返回指向this的智能指针函数。2.代码异常后面的代码delete没有执行到导致内存泄露。
2024-05-11 15:10:15
471
原创 C++设计模式-创建型-简单工厂模式,工厂方法模式,抽象工厂模式,附builder、singleton、prototype
抽象工厂模式:创建二维对象,即一个工厂创建多个产品。形成一个表格,例如型号a,b,c和系列1,2,3对应产品可以有a1,a2,a3,b1,b2,b3,c1...等。singleton:全局有且仅需要有一个对象且都要用。(问这种模式的往往项目不使用设计模式与uml)。工厂方法模式:创建一维对象,即一个工厂创建一个产品。builder模式:根据xml解析为内存对象。简单工厂模式:根据字符串参数返回对象。
2024-02-04 22:37:05
1040
原创 C++设计模式-依赖倒置原则
定义:高层不依赖底层,两者依赖抽象;依赖传递方法:1.构造函数2.set函数3.直接调用法。依赖倒置原则定义了类的。(封装、继承、多态)
2024-02-03 21:01:30
159
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人