
c++
文章平均质量分 54
oceanstonetree
代码爱好者。地质和石油类专业,喜欢编程。目前从事地质建模+人工智能的研发工作。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++一种简单的打印进度条的方法
摘要:这段C++代码实现在循环内部打印动态进度条。通过计算当前进度百分比,使用50字符宽度的进度条显示进度,其中"="表示已完成部分,">"表示当前位置。当百分比变化时,使用"\r"覆盖上一行重新输出进度条,格式如"[====> ] 80%"。代码通过比较当前和上次百分比值避免频繁刷新,使用cout.flush()确保即时显示。原创 2025-08-16 09:27:30 · 188 阅读 · 0 评论 -
c++数学表达式解析求值库推荐
许多应用程序需要解析数学表达式。这里对比了几个用来数学表达式解析求值的库,推荐ExprTK, TinyExpr, Muparser原创 2023-11-25 10:52:39 · 2881 阅读 · 0 评论 -
地震segy数据高效读写库cigsegy在windows系统的编译
官方给的主要是在linux上的编译方式,在windows系统上没有详细说明。这里用visual studio 2019进行了编译,很容易就编译形成了静态库文件。其中用到了fmt格式化库。打印了seyg的文本头信息和线道号基本信息,下面列出了该库提供的其他主要接口。格式文件读到内存或者直接转为二进制文件,也可以将一个。通过下面代码对生成的cigsegy静态库进行了测试。原创 2023-06-04 00:43:57 · 945 阅读 · 2 评论 -
几何工具引擎(geometry tool engine)
基于CPU的通用图形引擎代码位于其自己的库(GTGraphics)中。几何工具库(GTL)将对GTE中的数学和几何代码进行修改,然后在时间允许的情况下添加新代码。对于使用HLSL、GLSL和CUDA的基于GPGPU的实现,以及使用Intel的SSE或AVX的基于SIMD的实现,将提供单独的代码。当我进入3D视频游戏行业时,我在图像代码上花费的时间更少,而在图形、物理和数学代码上花费了更多的时间。欢迎访问Geometric Tools的官方网站,这是数学、几何、图形、图像分析和物理领域计算的源代码集合。原创 2023-02-10 08:21:59 · 3480 阅读 · 0 评论 -
基于c++获取文件夹下指定后缀的全部文件
基于c++17的filesystem,获取文件夹下指定后缀的全部文件,支持多种后缀原创 2022-12-09 21:31:07 · 1637 阅读 · 1 评论 -
科学计算与数值分析方面的算法库
科学计算和数值分析是一个研究领域,旨在提供借助计算机解决不同科学领域的大规模问题的方法。典型的问题是常微分方程和偏微分方程(ODE,PDE),它们的离散化,以及由此产生的线性代数问题的解。这里列出了常见的资源,包括基本的线性代数库,多目的工具箱,有限元,网格化,数据格式,稀疏线性求解,可视化,其他库和工具,以及社区。这些库涵盖了多种语言,如C/C++,python等。转载 2022-11-28 23:13:26 · 887 阅读 · 0 评论 -
地震褶积方法制作合成地震记录c++
地震褶积方法制作合成地震记录包括,(1)读取相模型,设置每种相的密度和速度,(2)计算反射系数,添加噪音,(3)设置子波,(4)进行褶积计算。原创 2022-08-29 21:35:40 · 1472 阅读 · 0 评论 -
sycl异构编程
SYCL是一种异构编程模式,旨在提高数据的局部性和移动效率。➢ SYCL将数据存储与数据访问分开,➢ SYCL具有用于访问不同地址空间中的数据的独立结构,➢ SYCL允许您创建数据依赖关系图。原创 2022-08-16 10:09:42 · 4035 阅读 · 2 评论 -
c++通过异步asyn执行任务,wait_for监督进度
c++通过异步asyn执行任务,wait_for监督进度。原创 2022-07-22 14:19:09 · 699 阅读 · 0 评论 -
osg学习-6《显示三维矩阵》
在三维空间显示三维矩阵,需要显示它的6个外表面。假设xyz三个方向的维数是ni,nj,nk,三个方向的顶点维数是ni+1,nj+1, nk+1。在每个面上分别绘制各自的四边形。每个四边形的颜色根据矩阵的值获取,这个例子采用了离散的数值。使用了之前创建的颜色模板类。...原创 2022-07-10 14:54:35 · 606 阅读 · 0 评论 -
osg学习-5《绘制坐标轴》
设置坐标轴的原点,xyz方向的长度,和字体的大小。方法是以原点位中心,绘制三条相互垂直的线,每条线用不同的颜色,并分别标注xyz文字,并把文字贴到屏幕上。原创 2022-07-10 14:48:01 · 1126 阅读 · 0 评论 -
osg学习-4《读取外部面数据并显示》
定义了颜色数据结构用来存储rgb颜色,在网上找了从灰度值计算彩虹色rgb值的方法,然后读取外部文件,根据面数据的值渲染颜色。其中IModelD是自定义的模板类,可以读写矩形网格系统下的面数据,获取面数据每个节点的坐标。...原创 2022-07-02 00:23:48 · 681 阅读 · 0 评论 -
osg学习-3《绘制三维曲面》
演示了创建曲面节点的函数(1)首先设置面数据的顶点坐标,设置面数据在I和J方向的网格个数,以及网格间距,随便设置z和颜色。也可以通过读取外部数据的方式获取顶点坐标和网格上的属性值,根据需要的色标计算每个网格的rgb颜色值。(2)每个网格一个图元,设置它的坐标索引,并设置颜色数组,通过图元绑定的方式渲染进行显示。...原创 2022-06-29 23:19:33 · 1184 阅读 · 0 评论 -
osg学习-2《绘制基本单元》
通过顶点索引的方式创建四边形和三角形,减少顶点的存储量。原创 2022-06-29 22:16:35 · 741 阅读 · 0 评论 -
C++三法则和五法则的实例测试
带只针的模板类,实现了c++11的五法则,即复制构造函数,赋值操作符,析构函数,移动构造函数,移动操作符。作为一个例子,可以参考。原创 2022-06-06 14:13:17 · 538 阅读 · 0 评论 -
C + + 编码中减少内存缺陷的方法和工具
编码规范检查的工具有:CodeWizard,PC-lint等。使用 Purify 和 Insure + + 来查找运行时内存缺陷。翻译 2022-02-15 21:48:45 · 884 阅读 · 0 评论 -
9个C++版本的数据计算库
常用的9个c++数值计算库,各有优点。原创 2022-01-27 09:24:57 · 2385 阅读 · 0 评论 -
c++矩阵数据的二进制读写(序列化和反序列化)
c++二维 矩阵数据的二进制的序列化和反序列化原创 2021-11-22 14:35:12 · 1163 阅读 · 0 评论 -
初步完成的c++二维矩阵容器
小小的二维矩阵,用到了模板、智能指针,列表等#include <iostream>#include <memory>#include <vector>using namespace std;template<typename T>class Array2D {public: Array2D() {}; Array2D(int m, int n, T value):_m(m),_n(n) { grid =.原创 2021-07-01 17:57:47 · 370 阅读 · 0 评论 -
三维空间三角形与线段相交判断
#include <iostream>#include <numeric>#include <math.h>#include <stdio.h>class vec3 {public: float x, y, z; float dot(const vec3& b) { return vec3::x * b.x + vec3::y * b.y + vec3::z * b.z; } vec3 .原创 2021-06-17 16:12:21 · 1118 阅读 · 1 评论 -
vtk读取3ds文件并显示c++版本
vtk提供了很方便的函数可以读取3ds文件,这种文件是3dmax软件制作的三维物件,之前的别人的文章写了python版本的读取和显示的代码,这里翻译成了c++版本的。VTK imported and displayed in STL, 3DS file - Programmer SoughtVTK中导入并显示STL、3DS文件_weixin_34115824的博客-优快云博客官方也给了3ds文件的c++例子https://kitware.github.io/vtk-examples/si.原创 2021-06-08 22:06:59 · 756 阅读 · 0 评论 -
文本编辑器配置为python和c++的开发环境
EmEditor, EditorPlus, EverEdit是三款不错的文本编辑器,都可以配置的开发环境,设置方法很类似。给文本编辑器配置开发环境,可以方便地进行简单的代码测试。1、配置python开发环境在工具的的外部工具中设置2、配置c++开发环境在工具的外部工具中选择另一个组添加build c++, run c++编译c++的命令是D:\msys64\mingw64\bin\g++.exe编译c++的参数是$(FilePath) -o $(FileDir原创 2021-04-12 10:01:07 · 494 阅读 · 0 评论 -
c调用C++的类成员函数
1、定义c++类CppClass.h文件//CppClass.h#pragma onceclass CppClass{public: CppClass(); ~CppClass(); int sum(int a, int b);};CppClass.cpp文件,包括类方法,和c封装函数实现//CppClass.cpp#include "CppClass.h"#include "CallCppFunc.h"CppClass::CppClass(){}原创 2021-04-10 15:13:53 · 1252 阅读 · 4 评论 -
ArrayFire函数列表
ArrayFire矩阵运算库提供了258个函数用来处理各种运算。涵盖的类型包括:数学函数https://arrayfire.org/docs/group__mathfunc__mat.htm线性代数https://arrayfire.org/docs/group__linalg__mat.htm信号处理https://arrayfire.org/docs/group__signal__mat.htm统计学https://arrayfire.org/docs/group__s.原创 2021-03-31 17:03:29 · 766 阅读 · 0 评论 -
visual studio编译c++项目时“.gitignore“常用设置
用git进行代码管理时没有必要把和代码关系不大的东西都push到仓库,通过 .gitignore文件可以方便地管理那些不被上传, 下面是常用的设置。# Prerequisites*.d# Compiled Object files*.slo*.lo*.o*.obj# Precompiled Headers*.gch*.pch# Compiled Dynamic libraries*.so*.dylib*.dll# Fortran module files*.mod原创 2021-03-03 08:31:14 · 2908 阅读 · 0 评论 -
c++机器学习库dlib编译及应用测试
1 dlib介绍Dlib是一个现代的C ++工具箱,其中包含机器学习算法和工具,这些工具和工具可以用C ++创建复杂的软件来解决实际问题。 它在工业和学术界广泛使用,包括机器人技术,嵌入式设备,移动电话和大型高性能计算环境。 Dlib的开源许可使您可以免费在任何应用程序中使用它。Dlib包含各种机器学习算法。 所有这些都设计为高度模块化,易于执行且通过干净现代的C ++ API易于使用。 它被广泛用于机器人,嵌入式设备,移动电话和大型高性能计算环境中。http://dlib.net/ https.原创 2021-02-27 22:02:54 · 941 阅读 · 0 评论 -
高性能可扩展线性求解算法库Hypre
目录2 安装 hypre¶3 使用Hypre3.1 选择概念接口3.2 编写代码4 实例测试5 文档说明https://nixbit.com/software/hypre-review/1 简介Hypre是由劳伦斯利弗莫尔国家实验室开发并进行开源。劳伦斯利弗莫尔国家实验室(LLNL)成立于1952年冷战高峰时期,旨在通过推进核武器科学和技术来满足紧迫的国家安全需求。在其历史上,实验室通过其才华横溢和敬业的员工队伍和世界一流的研究能力,以科学和技术创新的传统,预测、开发和提原创 2021-01-16 22:50:21 · 5295 阅读 · 0 评论 -
模板数值工具包(Template Numerical Toolkit, NTT)
该库由美国国家标准与技术研究所的数学与计算科学学部开发https://math.nist.gov/tnt/简介模板数值工具包(TNT)是数值对象的接口和参考实现的集合,可用于C ++中的科学计算。 该工具包定义了用于数值应用程序中的基本数据结构的接口,例如多维数组和稀疏矩阵。 该软件包的目的是提供可重用的软件组件,以解决C ++代码的许多可移植性和维护性问题。相比于目前常用的eigen,这个库更简单,对三维数据的支持更好。 TNT提供了TNT组件的接口和实现之间的区别。 例如,有一个用于二...原创 2021-01-16 21:41:51 · 490 阅读 · 0 评论 -
基于Cuda的开源张量计算库ArrayFire
基于Cuda的开源张量计算库ArrayFire1、ArrayFire介绍关于ArrayFire ArrayFire是一个高性能的软件库,可通过易于使用的API进行并行计算。 其基于数组的功能集使并行编程更易于访问。 安装ArrayFire您可以使用Windows,OSX或Linux的二进制安装程序安装ArrayFire,也可以从源代码下载它:Windows,OSX和Linux的二进制安装程序从源代码构建易于使用数组对象非常简单。 基于数组的符号有效地表达了类似于可读数学符号的计算...原创 2021-01-10 17:18:29 · 1441 阅读 · 0 评论 -
基于c++ amp的gpu编程
目录摘要:1 简介2 性能改进2.1 异构平台2.2 gpu架构2.3 通过平行的性能改进3 gpu编程架构3.1 opencl3.2 cdua3.3 c++ amp4 一个c++ amp解决方案5 结论参考资料http://ceur-ws.org/Vol-1746/paper-23.pdf摘要:如今,程序员面临的挑战是使他们的程序变得更好。“更好”一词意味着更简单,可移植且执行速度更快。 异构计算是计算机科学领域的一种新方法。..原创 2020-12-21 15:17:55 · 2064 阅读 · 0 评论 -
VTK和ParaView中引入了显式结构化网格表达地质网格
Introducing Explicit Structured Grids in VTK and ParaView - Kitware Blog1、简介新版本的vtk引入了适用于油藏角点网格模型的显式结构化网格,即在原来非结构化网格vtkUnstructuredGrid和结构化网格vtkStructuredGrid的基础上添加了处于两者之间的显式结构化网格vtkExplicitStructuredGrid。它表示有拓扑结构的数据集(所有单元格均为六面体,并沿i,j和k方向进行结构化),但是可以显式地原创 2020-11-24 10:52:31 · 3183 阅读 · 7 评论 -
调用c++标准库的algorithm中的sort对vector中的自定义类型进行排序
调用c++标准库的algorithm中的sort对vector中的自定义类型进行排序#include <iostream>#include <vector>#include <set>#include <tuple>#include <algorithm>#include <random>#include <chrono>using namespace std;class ValueIJ.原创 2020-11-18 23:13:03 · 493 阅读 · 0 评论 -
dune数值计算算法库
目录1、Dune简介2、Dune安装3 、第一个Dune实例应用helloworld本文对dune进行了简单介绍,说明了安装方法(只能在linux或win10下的wsl中安装),以及通过helloworld的简单例子进行了环境验证,下次根据教程演习如果进行泊松方程创建和求解。1、Dune简介DUNE (Distributed and Unified Numerics Environment),分布和统一数值解环境,是一种求解偏微分方程的基于网格的方法(PDE)的模块化的工具箱。DUN原创 2020-11-16 20:19:22 · 1238 阅读 · 0 评论 -
opencv c++中的9种方式创建矩阵Mat
//1 create a mat with random values//2 create zeors or ones Mat//3 common attribute of Mat//4 access element of Mat by at//5 access element of Mat by ptr//6 access element of Mat by ptr and is continous//7 get one row or one col of a Mat//...原创 2020-11-12 15:58:20 · 4165 阅读 · 1 评论 -
vcpkg下载速度慢的解决办法
vcpkg是微软开发的命令行包管理工具,在使用第三方库的c或c++开发中可以简化相关的配置操作。vcpkg安装的包支持Visual Studio 2015 update 3及以上版本,包括vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。如果未安装,则使用vs2015编译和安装。使用vcpkg对于c或c++开发,令人烦恼的第三方包管理工作大大的减轻,实则是“居家旅行,必备之品”。vcpkg需要安装某个包原创 2020-10-31 08:15:35 · 2424 阅读 · 0 评论 -
C++常用机器学习库
涉及的库主要是机器学习、矩阵计算、计算结果显示。Shogun、Shark、Dlib、Mlpack、Libtorch、Opencv、Armadillo、Eigen3、Xtensor、Fast-cpp-csv-parser、Rapidjson、Plotcpp、matplotlibcpp、mathGL等一、侧重机器学习算法1、ShogunShogun是开放源代码的机器学习库,它提供了多种高效且统一的机器学习方法。Shogun支持多种语言(Python,Octave,R,Java / Sc...原创 2020-09-12 22:10:05 · 9170 阅读 · 0 评论 -
libtorch c++ 自定义数据类型并使用
上述几节主要介绍了如何利用MNIST数据集搭建多层神经网络并完成模型的训练,用到的数据都是torch::data::dataset自带的数据集,这节介绍如何根据实际情况创建自己的数据集。(1)自定义类型的设计方法实际上,自定义数据类型很简单,只需要继承torch::data::datasets::Dataset<self, SingleExample>,同时重写get(size_t index)以获取指定元素和样本总数size()即可。Dataset类继承的定义在base.h中,它继原创 2020-06-25 23:57:43 · 2344 阅读 · 4 评论 -
libtorch c++ 线性卷积联合网络的训练及测试用于识别MNIST手写数据集
本实例同时采用卷积、池化、丢弃、非线性化、和线性网络层等多种网格联合识别手写数字。(1)网络定义模块网络的定义部分,定义结构体Net,内部成员有二维卷积层conv1,conv2,丢弃层conv2_dropout,线性层fc1,fc2,采用的其它网络层有最大池化层,max_pool2d, 非线性化层relu,压缩值域层log_softmax。其中,卷积层和线性层的参数如下:conv1(torch::nn::Conv2dOptions(1, 10, /kernel_size=/5)), conv原创 2020-06-24 23:42:10 · 1511 阅读 · 3 评论 -
Libtorch c++ 基本概念
上一节在VS 2019上配置了Libtorch c++,并进行了测试。有了基本的环境设置,可以进入更有序的学习。首先,讨论怎么利用面向c++的接口定义模块(module)并与之交互。从最基本、最小规模的模块开始,然后利用面向c++接口内置的模块搭建完整的对抗生成网络模型。1、libtorch的主要模块的分类 Component Description torch::Tensor 可以自动微分,支持CPU和GPU的张量计算库 torch::nn 用于神经网络原创 2020-06-01 23:03:42 · 4754 阅读 · 0 评论 -
Libtorch + vs 2019安装及配置
Libtorch是c++接口的Pytorch,提供了与python版本基本一致的接口,使用很方便,而且更适合实际部署。这里介绍Libtorch的在VS2019下的部署和简单测试使用。1、从官网下载https://pytorch.org/get-started/locally/目前可以下载到Libtorch1.5版本,如果电脑支持Gpu,且安装了Cuda,可以下载Gpu版本,否则下载cpu版本。下载解压之后如下2、在VS2019中的配置需要配置.头文件h 库文件,lib, 和d原创 2020-06-01 21:24:36 · 9533 阅读 · 21 评论