自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 OpenMP:变量作用域

使用 lastprivate 子句声明的变量在并行区域内有线程私有副本,但在退出并行区域时,最后一个执行的线程的私有副本将被赋值给相应的共享变量。int x;i < n;// 最后一个迭代的x值被捕获// 现在x等于最后一个线程的x值。

2024-04-21 20:08:27 973

原创 微分几何:曲面基本理论

类似于曲线的定义,曲面就是一个映射,它把平面上的一块区域映射到3维空间中

2024-04-10 08:07:54 679

原创 OpemMP 同步结构

OpenMP同步指令

2024-03-31 22:26:14 506

原创 微分几何:曲线基本理论

微分几何曲线基本理论,曲线参数化到frenet标架

2024-03-27 21:28:38 995

原创 OpemMP指令: 共享任务构造

共享任务构造(Work-Sharing Constructs)将并行区域的代码执行分配给不同的线程,该指令不产生新的线程,进入共享工作区域不会有同步屏障(barrier),退出共享任务构造的时候会有隐式的同步屏障。

2024-03-22 20:46:41 385

原创 OCCT BRep数据结构

OCCT的拓扑数据结构定义在TopoDS(Topology data structure)为前缀的类中,分为两套派生结构,TopoDS_Shape和TopoDS_TShape

2024-03-20 22:17:19 428 1

原创 OpenMP指令: 并行构造

并行区域是被多个线程并发执行的代码块,通过如下指令构建并行区域,这是OpenMP的基础。

2024-03-17 22:07:27 162 1

原创 几何建模Brep边界表达法

几何建模技术首先要解决的是几何形体在计算机内部的表达

2024-03-15 08:02:38 1513 1

原创 OpenMP 编程模型

OpenMP 专为多处理器/核心、共享内存机器设计,底层架构可以是共享内存UMA或NUM

2024-03-13 20:48:32 751

原创 OpenMP API 概述

OpenMP API 包括三个独立的组件编译器指令运行时库例程环境变量不同的实现对API组件的支持有所差异,应用程序开发人员决定如何使用这些组件,对于简单的情况,只需要其中的一部分。

2024-03-11 20:01:43 946 1

原创 OpenMP简介

OpenMP 是一个应用程序接口 (API),由一组主要的计算机硬件和软件供应商共同定义。OpenMP 为共享内存并行应用程序的开发人员提供了一个可移植、可扩展的模型。该 API 支持各种架构上的 C/C++ 和 Fortran。

2024-03-10 20:40:06 378 1

原创 OpenCascade源码剖析:Handle类

Handle其实就是智能指针的上古版本,了解一点C++11的应该对shared_ptr非常熟悉,那么你就把Handle当做shared_ptr来理解就没有任何问题了。

2024-03-08 20:30:51 374 1

原创 OpenCascade源码剖析:Standard_Transient根类

Standard_Transient是OCCT继承体系最顶层的根类,Standard_Transient类主要提供了三个机制,内存分配,RTTI和引用计数。

2024-03-07 21:52:03 716 1

原创 泛函与变分法:基本定义

变分法基础

2024-03-04 22:15:04 1218 1

原创 C++11多线程基础入门

C++11多线程基础知识点

2024-03-03 20:33:10 1216

原创 C++模板元一生之敌之:std::disconjunction

disconjunction是上篇介绍的conjunction的同胞兄弟,模板参数包中至少有一个为ture时,其value为true,相当于对一系列类型特性(type traits)做逻辑或

2024-03-01 21:36:33 264 1

原创 C++模板元一生之敌之:std::conjunction

std::condition相当于对一系列类型特性(type traits)做逻辑与(And),例如conjunction<T1,T2,T3,>,如果T1,T2,T3能够萃取出bool类型的value,那么上面试式子相当于T1::value && T2::value && T3::value,按照惯例先看应用场景,condition可以用来判断一系列类型是否相同。想要理解这几行代码,首先需要理解递归模板,相信诸位接触过模板元的都知道用模板实现递归计算阶乘的代码。

2024-02-29 20:50:49 383

原创 OpenGL扫盲入门

OpenGl一些基础知识

2024-02-28 20:03:56 773 1

原创 C++ STL分配器rebind

大部分人在学习STL源码的时候,都会参考侯捷老师的《STL源码剖析》,在第二章介绍分配器的时候,出现过rebind的身影:这段代码神秘的出现在了这里,然后了无后续,相信给很多人造成了STL修仙练气期的心里阴影。

2024-02-27 19:43:37 544

原创 高斯积分和代码实现

高斯积分是有限元中常用的数值积分方法,由于有限元插值函数一般为多项式,被积函数一般也是多项式,高斯积分使用很少的积分点,就能达到较高的积分精度。

2024-02-26 19:50:21 658 1

原创 C++惯用法之:copy and swap idiom

如果拷贝构造函数中发生了异常,对象就不会被修改,因为当前对象的状态只在交换操作中发生变化,这使得整个赋值操作在异常发生时,对象状态仍然保持一致。考虑一个类,其中有成员变量是指针,而拷贝赋值操作需要分配内存,如果分配失败,将抛出异常,如果在这个过程中抛出异常,可能会导致对象的数据处于损坏的状态。这种方法的基本思想是,首先通过深拷贝源对象(operator = 右边的对象)创建一个临时对象,然后与当前对象进行交换。这样,传入对象的资源会转移到当前对象,当前对象原有的资源也能正确释放。操作中抛出了异常,对象的。

2024-02-25 21:40:17 570

原创 记一次离谱的unordered_map性能退化

有时候直觉是不准确的,数据结构和算法有时候还是有点用处

2024-02-24 22:12:58 1168

原创 STL迭代器引发的崩溃问题

1、写符合C++规范的代码,通过基类指针析构子对象,没有虚析构函数是不符合规范的代码,不符合规范就容易坑你。2、STL的调试版迭代器还是很强大,这种防御性编程,能够帮你快速的定位到程序潜在的问题,否则无端的崩溃会让你怀疑人生。

2024-02-23 21:25:34 1092

原创 C++ std::vector和移动优化

移动语义下,vector扩容时就有了优化的空间,毕竟原来对象的资源是可以重复使用的,vector也确实使用移动构造来代替拷贝构造,但是这种优化是有限制的,即vector中存储对象必须有移动构造函数,而且需要是noexcept的。因为移动构造会损坏源对象,如果对象移动的过程中发生了异常,那么原来的vector的数据就处于损坏的状态,而且不可恢复,为了保证异常安全,因而才有noexception的限制。对于左值,直接用拷贝构造函数构造在容器,对于右值,直接用移动构造构造在容器,只需要调用一次构造函数。

2024-02-21 08:00:51 1284 1

原创 C++两万字长文总结

2万字长文,纵观C++全貌

2024-02-05 19:26:38 750

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除