
C++
hankern
Code World,Cool Life
展开
-
C++学习(七十五)有关Orekit
Orekit(ORbits Extrapolation KIT)是一款占用空间少的低层空间动力学 Java 库。它提供基础的元素(比如轨道、日期、属性和框架)和多种算法支持转换,分析和数值传递。Orekit 是纯 Java 库,运行时只依赖 Java 6 及以上的版本和 Apache Commons Math 库 3.2 及以上版本包结构:...原创 2019-10-17 06:34:05 · 1792 阅读 · 1 评论 -
C++学习(七十四)有关三维压缩库draco
一、是什么Draco是谷歌Chrome 媒体团队在2017年1月发布的一个3D图形开源压缩库,提供了多种算法进行压缩和解压缩。旨在大幅加速 3D 数据的编码、传输和解码。因为研发团队的 Chrome 背景,这个开源算法的首要应用对象是浏览器。但既然谷歌把它开源,现在全世界的开发者可以去探索 Draco 在其他场景的应用,比如说非网页端。目前,谷歌提供了它的两个版本: JavaScript...原创 2019-10-17 06:24:19 · 1366 阅读 · 0 评论 -
C++学习(四十三)指针类型转换
可以用于函数指针等类型的转换template<typename T, typename R>bool convertPointer(T& dest, R src){ memcpy(&dest, &src, sizeof(src)); return src!=0;}和reinterpret_cast<char*>(nam...原创 2019-07-07 23:36:59 · 243 阅读 · 0 评论 -
C++学习(三十六)struct与class
struct是C语言的产物,C++为了兼容C保留了struct,struct和class基本相同,除了以下几点:1、struct没有多态和虚拟继承2、默认继承权限不同,class继承默认是private继承,而struct默认是public继承3、默认成员访问权限不同。class的成员默认是private权限,struct默认是public权限。4、class还可用于定义模板参数,...原创 2019-06-30 07:27:54 · 245 阅读 · 0 评论 -
C++学习(四十)fputs
C语言库函数,把字符串写入到指定的流( stream) 中,但不包括空字符,不自动写入字符串结束标记符‘\0’。成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)。int fputs(const char *str, FILE *stream);返回值:该函数返回一个非负值,如果发生错误则返回 EOF(-1)。(1)str:这是...原创 2019-07-06 07:14:19 · 1206 阅读 · 0 评论 -
C++学习(四十一)stderr stdout
stdout -- 标准输出设备。stderr -- 标准错误输出设备两者默认向屏幕输出。但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出。...原创 2019-07-06 07:17:21 · 1035 阅读 · 0 评论 -
C++学习(四十二)缓冲:满缓冲 行缓冲 无缓冲
类型 说明 输出情况 满缓冲 I/O操作只有在缓冲区被填满后才会进行 1、缓冲区满 2、刷新数据(flush) 3、关闭文件 行缓冲 遇到换行符或者缓冲区满后才会执行I/O操作 1、缓冲区满 2、刷新数据(flush) 3、关闭文件 4、遇到换行符 无缓冲 不缓存,直接进行...原创 2019-07-06 07:22:35 · 434 阅读 · 0 评论 -
C++学习(四十六)Rust语言
Rust是一门系统编程语言 [1] ,专注于安全 [2] ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似 [3] ,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。 [4] ...原创 2019-07-19 20:43:46 · 621 阅读 · 0 评论 -
C++学习(四十七)凸包及算法
凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的凸组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。凸包最常用...原创 2019-07-21 07:21:07 · 1249 阅读 · 0 评论 -
C++学习(四十八)homebrew及其安装
Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。在Homebrew中,软件包分为 CLI 软件包和 GUI 软件包: CLI 的软件包称为 formula,被安装至 /usr/local/Cellar,如 git、maven 等 GUI 的软...原创 2019-07-31 23:24:41 · 442 阅读 · 0 评论 -
C++学习(四十九)Qt5.4 mac Undefined symbols for architecture x86_64
原因是编译器和sdk版本不匹配,需要在项目pro文件中添加: macx:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12 macx:QMAKE_MAC_SDK=macosx10.12原创 2019-08-06 21:11:33 · 481 阅读 · 0 评论 -
C++学习(五十)Qt的insert和command模式
Edit -> Advanced -> Use vim-style editing进行取消或设置原创 2019-08-06 21:52:19 · 1233 阅读 · 0 评论 -
C++学习(三十五)delete与delete[]
记住基本原则:new申请的内存,释放时用delete,使用new [ ]申请的内存释放时要用delete [ ]。下面解释原因:假设通过new申请了一个对象数组,注意是对象数组,返回一个指针,对于此对象数组的内存释放,需要做两件事情:一是释放最初申请的那部分空间,二是调用析构函数完成清理工作。对于内存空间的清理,由于申请时记录了其大小,因此无论使用delete还是delete[ ]都能将这...原创 2019-06-30 07:13:17 · 266 阅读 · 0 评论 -
C++学习(三十四)stdlib与cstdlib
C语言中是有#include <stdlib.h>的。 这是C语言标准的包含库头文件stdlib.h的语句。在代码中引用此句后,就可以使用stdlib.h中的函数,而不会出现未声明的警告。在C++中也可以使用#include <stdlib.h>,因为C++兼容了C语言中的操作。不过一般更推荐使用C++风格的头文件,即#include <cstdlib>。c...原创 2019-06-30 06:43:11 · 2598 阅读 · 0 评论 -
C++学习(二十七)define内存分析
#define的内存单元在程序运行前已经分配宏定义只是在预处理器里进行文本替换编译后放在常量数据区原创 2019-06-24 05:45:44 · 716 阅读 · 0 评论 -
C++学习(二十七)拷贝构造函数和移动构造函数
C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(CopyAssignment operator)和析构函数(Destructor)。C++11之后,新增加了两个函数:移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment opera)。C++的特点就是撇清值和引用的区别,而不是像Ja...原创 2019-06-24 05:50:53 · 751 阅读 · 0 评论 -
C++学习(三十二)初始化列表
从概念上来讲,构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段。初始化阶段所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中。 计算阶段一般用于执行构造函数体内的赋值操作。...原创 2019-06-27 06:44:38 · 144 阅读 · 0 评论 -
C++学习(三十八)friend友元
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但它需要在类体内进行说...原创 2019-07-02 22:41:49 · 238 阅读 · 0 评论 -
C++学习(二十八)值传递的性能问题
对于int,直接传值比传引用节省了一次解引用的开销,其效率当然会高,基本数据类型都是优化过的引用传值有两个好处:1.参数可以带回来值2.大对象无需拷贝进去对于大对象而言引用传递效率会更高...原创 2019-06-24 20:39:07 · 392 阅读 · 0 评论 -
C++学习(二十八)性能优化提升
1、减少临时变量2、减少 Implicit conversion (隐式转换)3、减少频繁的内存申请、释放转载自:http://www.708luo.com/?p=33临时变量目前遇到的一些产生临时变量的情况:函数实参、函数返回值、隐式类型转换、多余的拷贝1. 函数实参这点应该比较容易理解,函数参数,如果是实参传递的话,函数体里的修改并不会影响调用时传入的参数的值...原创 2019-06-24 20:58:31 · 515 阅读 · 0 评论 -
C++学习(三十九)std endl的作用
endl为换行标记,可以插入到输出流中,效果为在输出结果中插入换行符'\n'。endl意思有两层,一是输出一个换行,二是清除缓冲区类似于调用ostream的flush()...原创 2019-07-03 23:15:51 · 425 阅读 · 0 评论 -
C++学习(四十四)流格式化输入
所需头文件:#include <iomanip>例子:cout << std::hex << std::setw(8) << std::setfill('0') << 123;格式化解释:dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill(...原创 2019-07-13 07:00:20 · 255 阅读 · 0 评论 -
C++学习(四十五)一个有趣的类型转换
通过重载()运算,可以将结构体、类转换为其它类型struct TRE{ TRE(){ i=456; } operator int () const { return i; } int i;};int main(int argc, char** argv){ int red=TRE();/...原创 2019-07-13 07:00:34 · 89 阅读 · 0 评论 -
C++学习(三十三)运算符优先级
C语言优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右 () ...原创 2019-06-29 22:20:16 · 256 阅读 · 0 评论 -
C++学习(五十一)mac环境变量
新增环境变量export http_proxy=http://127.0.0.1:8123/删除环境变量unset http_proxy查看环境变量envexport MAVEN_HOME=/usr/local/apache-maven-3.6.0export PATH=$PATH:$MAVEN_HOMEexport OSG_HOME=/Users/...原创 2019-08-06 22:27:48 · 430 阅读 · 0 评论 -
C++学习(五十七)mental ray已死
最早属于Autodesk,后来卖给了NVIDIA现在NVIDIA要专注于AI和GPU加速,就停止mental ray的更新和销售所以,以后就不会再有mental ray了!!!原创 2019-09-01 07:58:31 · 295 阅读 · 0 评论 -
C++学习(六十五)进程内存布局
低地址高地址堆向高内存地址生长,栈向低内存地址生长。C++程序的内存格局通常分为四个区:代码区(code area),全局数据区(data area),堆区(heap area),栈区(stack area)(即自由存储区)。所有类成员函数和非成员函数代码存放在代码区;全局数据区存放全局变量,静态数据和常量;余下的空间都被称为堆区;为运行函数而分配的局部变量、函数参数、...原创 2019-09-27 06:25:18 · 146 阅读 · 0 评论 -
C++学习(六十六)IoT和AIoT
loT是物联网的英文名称,是Internet of Things的缩写AloT是物联网的英文名称是All in IoT的缩写原创 2019-09-28 21:26:44 · 936 阅读 · 0 评论 -
C++学习(六十七)虚拟化
一、什么是虚拟化虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。二、为什么要虚拟化在实际中,虚拟化技术主...原创 2019-09-28 22:30:20 · 971 阅读 · 0 评论 -
C++学习(六十八)超线程
一、什么是超线程超线程(HT, Hyper-Threading)是英特尔研发的一种技术,于2002年发布。超线程技术原先只应用于Xeon处理器中,当时称为“Super-Threading”。之后陆续应用在Pentium 4 HT中。早期代号为Jackson。通过此技术,英特尔实现在一个实体CPU中,提供两个逻辑线程。之后的Pentium D纵使不支持超线程技术,但就集成了两个实体核心,所以...原创 2019-09-28 22:42:43 · 547 阅读 · 0 评论 -
C++学习(六十九)国产先看GPU
在CPU处理器领域,国产已经涉足了ARM、MIPS甚至X86等多种指令集架构,不论自研还是授权都已经有所成就,但在GPU领域,国内厂商面对AMD、NVIDIA两座大山恐怕连影都追不上。GPU市场的门槛太高,所以国内搞GPU自主研发的公司也有不少,但是作出成绩的不多,长沙景嘉微公司以军用GPU起家,此前研发的景美JM5400 GPU已经实现了军用领域的国产替代。长沙景嘉微电子股份有限公司成立...原创 2019-09-28 22:49:59 · 794 阅读 · 0 评论 -
C++学习(七十)IaaS PaaS SaaS
一、SaaS软件即服务(也称为云应用程序服务)代表了云市场中企业最常用的选项。 SaaS利用互联网向其用户提供应用程序,这些应用程序由第三方供应商管理。 大多数SaaS应用程序直接通过Web浏览器运行,不需要在客户端进行任何下载或安装。Google Apps、Dropbox、Salesforce、Cisco WebEx、Concur和GoToMeeting等二、PaaS云...原创 2019-09-29 21:51:49 · 433 阅读 · 0 评论 -
C++学习(七十一)3Dtiles glTF glb b3dm
一、glTFglTF表示了渲染一个模型的几何数据、纹理数据、材质数据、元数据等。glTF一般用于表示一个具体模型,比如汽车、树木等,不会用于表示一个数字城市,数字城市一般用3DTiles来表示。glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能;第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,...原创 2019-09-30 22:21:07 · 14399 阅读 · 1 评论 -
C++学习(七十二)英寸 厘米 像素 dpi 分辨率
1英寸(in)=2.54厘米(cm)1厘米(cm)=0.3937008英寸(in)电子地图比例尺1:50000,实际图上1厘米(cm)表示500m电子地图的分辨率一般为300dpi,也就是每英寸有300个像素点,每个像素点的长度为1/3001pt=1/300in=2.54/300cm,表示2.54*500/300m=4.23m也即1:50000的电子地图在300...原创 2019-09-30 22:32:38 · 3021 阅读 · 0 评论 -
C++学习(七十三)std::list通过push_back添加的内容看不到
typedef std::list<class Config> ConfigSet;ConfigSet _children;原创 2019-10-05 08:33:33 · 1144 阅读 · 0 评论 -
C++学习(六十四)虚函数表_vfptr
在调试程序时,经常会遇到类下面有_vfptr(定义为void**类型),它其实是虚函数表指针(本质是函数指针数组,数组的内容为函数指针)。原创 2019-09-27 05:55:21 · 337 阅读 · 0 评论 -
C++学习(六十三)指针数组和数组指针
指针数组(类似整型数组、浮点型数组),指数组里的元素为指针。#define ARRAY_LEN 100char *myStrPtr[ARRAY_LEN] = // char指针的数组{ // 墨菲定律的几条推论:“会出错的事,总会出错。”“世上没有绝对正确的事情。”“每个解决办法都会衍生出新的问题。”};数组指针(类似整型指针、浮点型指针),指针指向的是数组。...原创 2019-09-26 22:28:47 · 136 阅读 · 0 评论 -
C++学习(六十二)整型初始化
Debug模式下, 未初始化的变量值为0xCCCCCCCC, 即:-858983460原创 2019-09-26 22:08:26 · 149 阅读 · 0 评论 -
C++学习(五十四)qt发布mac程序
当你用Qt开发好程序后,是不是会很期待将你的成果分享给你的小伙伴可是Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行。比较幸运的是,Qt为我们提供了macdeployqt工具,借助于此,在OS X上发布Qt写的程序几乎是所有平台中最简单的。注:我电脑配置了Qt的bin环境,所以可以直接使用macdeployqt如果没配...原创 2019-08-13 21:43:12 · 619 阅读 · 0 评论 -
C++学习(五十五)mac qt glew
下载glew源码进行编译因为glew在Mac OS X上使用了Cocoa,依赖了几个其它的库:Cocoa、IOKit和CoreVideo。将这3个库也在Link Binary With Libraries中设置好,编译就能通过了。pro文件配置win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../test/lib...原创 2019-08-13 22:15:32 · 326 阅读 · 0 评论