C++ primer
文章平均质量分 58
mylove10086
;ldfk
展开
-
c++ 版本ceisum
cesium、模型转换、3dtiles、obj 、building、三维建筑、白模原创 2022-12-23 17:27:37 · 2804 阅读 · 13 评论 -
谷歌 draco学习 一 压缩格网信息
draco版本是Version 1.3.6地址:https://github.com/google/draco压缩三角网,包括点的位置meshPositions、法线meshnormals、纹理坐标meshUv示例使用c++完成。具体步骤1、初始化变量和数据。初始化一个四边形,两个三角网//顶点信息float meshPositions[12] = {0, 0, 0...原创 2020-05-02 20:53:00 · 1376 阅读 · 1 评论 -
谷歌 draco学习 二 压缩点信息
draco版本是Version 1.3.6地址:https://github.com/google/draco压缩点信息,包括点的位置position、法线normal、颜色color和点云中的一个噪声noise示例使用c++完成。具体步骤一下1、初始化变量和数据。保存位置position、法线normal、颜色color和点云中的一个噪声noise的变量std::v...原创 2020-04-28 19:54:03 · 1586 阅读 · 4 评论 -
C++ primer 十八 将对象用作异常类型
通常,引发异常的函数将传递一个对象。这样做的重要优点之一是,可以使用不同的异常类型来区分不同的函数在同情况下引发的异常。另外,对象可以携带信息,程序员可以根据这些信息来确定引发异常的原因。同时,catch块可以根据这些信息来决定采取什么样的措施。例如,下面是针对函数hmean引发的异常而提供的一种设计:class bad_Hmean{private:double v1,v2;p原创 2016-12-24 21:39:33 · 251 阅读 · 0 评论 -
C++ primer 十四 C++中的类(三)
类的构造函数和析构函数 对于Stock类,还有其他一些工作要做。应为类提供被称为构造函数和析构函数的标准函数。下面来看一看为什么需要这些函数以及如何使用这些函数。 C++的目标之一是让使用类对象就像使用标准类型一样,然而,到现在为止,还不能让您像初始化int或结构那样来初始化Stock对象。也就是说,常规的初始化语法不适用于类型Stock:int原创 2016-12-18 19:29:08 · 268 阅读 · 0 评论 -
C++ primer 十五 this 指针
对于Stock类,还有很多工作要做。到目前为止,每个类成员函数都只涉及一个对象,即调用它的对象。但有时候方法可能涉及到两个对象,在这种情况下需要使用C++的this指针。 虽然Stock类声明可以显示数据,但它缺乏分析能力。要让程序知道存储的数据, 最直接的方式是让方法返回一个值。为此,通常使用内联代码,如下例所示: class Stock{privat原创 2016-12-18 19:50:07 · 370 阅读 · 0 评论 -
C++ primer 十九 泛型算法replace/replace_copy/sort/unique
replace算法读入一个序列,并将其中所有等于给定值的元素都改为另一个 值。此算法接受4个参数:前两个是迭代器,表示输入序列,后两个一个是要搜索的值, 另一个是新值。它将所有等亍第一个值的元素替换为第二个值://将所有值为0的元素改为42replace (ilst.begin(), ilst.end(), 0, 42); 此调用将序列中所有的0都荇换为42。如果我们希原创 2017-01-07 21:29:47 · 331 阅读 · 0 评论 -
C++ primer 十六 继承:is-a关系
派生类和基类之间的特殊关素是基于C++继承的底层模型的。实际上C++有3种继承方式:公有继承、保护继承和私有继承。公有继承是最常用的方式,它建立一种is-a关系,即派生类对象也是一个基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行。例如,假设有一个Fruit类,可以保护水果重量和热量。因为香蕉是一种特殊的水果,所以可以从Fruit类派生出Banana类。新类奖继承原始的类的所有数据成原创 2016-12-20 21:47:32 · 323 阅读 · 0 评论 -
C++ primer 二十 map、sset关联容器
map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,原创 2017-01-09 21:49:57 · 352 阅读 · 0 评论 -
map<string, vector<string> >
#include #include #include #include #include using namespace std;struct entry { string key; string* vals; size_t nvals;};#define NVAL(x) (sizeof(x)/sizeof(x[0]原创 2017-01-10 21:04:15 · 4167 阅读 · 0 评论 -
C++ primer 二十一 模板
模板定义以关键字template开始,后跟一个模板参数列表(template parameter list),这是一个逗号分隔的一个或多个模板参数(template parameter)的列表,用小于号()包围起来。 模板参数列表的作用很像函数参数列表。函数参数列表定义了若干特定类型的局部变量,但并末指出如何初始化它们。在运行时,调用者提供实参来初始化形参。 类似的原创 2017-01-19 15:52:05 · 238 阅读 · 0 评论 -
C++ primer 十七 异常和try、catch
程序有时会遇到运行阶段错误,导致程序无法正常地运行下去。例如,程序可能试图打开一个不可用的文件,请求过多的内存,或者遭遇不能容忍的值。通常,程序员都会试图预防这种意外情况。C++异常为处理这种情况提供了一种功能强大而灵活的工具。异常是相对较新的C++功能,有些老式编译器可能没有实现。另外,有些编译器默认关闭这种特性,您可能需要使用编译器选项来启用它。 讨论异常之前,先来肴肴程序员原创 2016-12-24 20:59:07 · 1031 阅读 · 0 评论 -
C++ primer 十三 C++中的类(二)
实现类成员函数 还需要创建类描述的第二部分:为那些由类声明中的原型表示的成员函数提供代码。成员函数定义与常规函数定义非常相似,它们有函数头和函数体,也可以有返回类型和参数。但是它们还有两个特殊的特征:•定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类;•类方法可以L方问类的private组件。 首先,成员函数的函数头使用作用原创 2016-12-18 11:36:33 · 757 阅读 · 0 评论 -
C++ primer 十二 C++中的类(一)
类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。一般来说,类规范由两个部分组成。•类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。• 类方法定义:描述如何实现类成员函数。简单地说,类声明提供了类的蓝图,而方法定义则提供了细节。 看下面的代码:stock0原创 2016-12-17 21:59:13 · 368 阅读 · 0 评论 -
C++ primer 九 指针和 const
将const用于指针有一些很微妙的地方(指针看起来总是很微妙),我们来详细探讨一下。可以用两种不 同的方式将const关键字用十指针。第一种方法是让指针指向一个常最对象,这样可以防止使用该指针来修改所指.14的值,第二种方法是将指针本身声明为常最,这样可以防止改变指针指向的位置。下面来看细节。首先,声明一个指常量的指针pt:int age= 39;const int * p原创 2016-12-14 21:43:57 · 322 阅读 · 0 评论 -
C++ primer 二 转义序列
有两类字符程序员不能直接使用:一类是不可打印(nonprintable)的字符,如退格或 其他控制字符,因为它们没有可视的图符:另一类是在C++语言中有特殊含义的字符(单 引号、双引号、问号、反斜线)。在这些情况下需要用到转义序列(escape sequence),转 义序列均以反斜线作为开始,C++语言规定的转义序列包括:换行符 \n原创 2016-12-04 19:55:53 · 463 阅读 · 0 评论 -
C++ primer 三 处理string对象中的字符
初始化string对象的方式string si 默认初始化,si是一个空串 string s2 (si) s2是si的副本string s2 = si 等价于s2 (si) , s2是si的副本string s3 ("value")原创 2016-12-06 20:34:41 · 236 阅读 · 0 评论 -
C++ primer 四 标准库类型vector
标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。因为vector “容纳着”其他对象,所 以它也常被称作容器(container)。要想使用vector,必须包含适当的头文件。在后续的例+中,都将假定做了如下 using声明:#include using std::vector;定义和初原创 2016-12-06 21:11:12 · 358 阅读 · 0 评论 -
C++ primer 五 switch内部的变量定义
switch的执行流程有可能会跨过某些case标签。如果程序跳转到了某 个特定的case,则switch结构中该case标签之前的部分会被忽略掉。这种忽略掉一 部分代码的行为引出了一个有趣的问题:如果被略过的代码中含有变量的定义该怎么办? 答案是:如果在某处一个带有初值的变量位于作用域之外,在另一处该变量位于作用 域之内,则从前一处跳转到后一处的行为是非法行为。cas原创 2016-12-08 09:58:30 · 637 阅读 · 0 评论 -
C++ primer 六 范围for语句
C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。范围for语句(range for statement)的语法形式是:for (declaration : expression) statement 表示的必须是一个序列,比如用花括号括起来的初始值列表、数组或者vector或string等类型的对象,这些类原创 2016-12-08 10:51:07 · 319 阅读 · 0 评论 -
C++ primer 七 const形参和实参
当形参是const时,必须要注意关于顶层const的。顶层const作用于对象本身:const int ci =42; //不能改变ci, const是顶层的int i = ci; //正确:当拷贝ci时,忽略了它的顶层constint * const p = &i; /原创 2016-12-09 11:29:43 · 304 阅读 · 0 评论 -
C++ primer 八 数组形参
数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别 是:不允许拷贝数组以及使用数组时(通常)会将其转换成 指针。因为不能拷贝数组,所以我们无法以值传递的方式使用 数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的 是指向数组首元素的指针。尽管不能以值传递的方式传递数组,但是我们可以把形参写成类似数组的形式://尽管形式不同,但原创 2016-12-09 11:49:38 · 273 阅读 · 0 评论 -
C++ primer 十 引用变量
C++新增了一种复合类型一引用变最。引用是己定义的变量的别名(另一个名称)。例如,如果将twain 作为clement变量的引用,则可以交替使用twain和clement来表示该变量。创建引用变量 C和C++使用&符号来指示变簸的地址。C++给&符号赋予了另一个含义,将其用來声明引用。例,要将rodents作为rats变量的别名,可以这样做:int rats;原创 2016-12-15 20:11:53 · 258 阅读 · 0 评论 -
C++ primer 十一 名祢空间
在C++中,名称可以是变景、函数、结构、枚举、类以及类和结构的成员。当随着项目的增大,名称相互冲突的可能性也将增加。使用多个厂商的类库时,可能导致名称冲突。例如,两个库可能都定义了名 为List、Tree和Node的类,但定义的方式不兼容。用户可能希望使用一个库的List类,而使用另一个库 的Tree类。这种冲突被称为名称空间问题。 C++标准提供了名称空间工具,以便更好地控原创 2016-12-17 21:27:36 · 283 阅读 · 0 评论 -
C++ primer 一
endl,这是一个被称为操纵符(manipulator)的特殊值。写入endl 的效果是结朿当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中。缓冲刷 新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在 内存中等待写入流。原创 2016-12-01 15:28:40 · 182 阅读 · 0 评论