自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

尧的博客

还没建好,以上

  • 博客(21)
  • 收藏
  • 关注

原创 effective morden c++4

条款二十一优先使用make_unique(c++14)与nake_shared而非使用newallccate_shared(分配子, 用以构建管理对象的参数)1、make系列仅仅会引起一次动态分配;new则是两次,一次给指针,一次给控制块2、new操作和构造函数之间可能执行其他导致异常的函数4个例外1、你需要定制析构器,make系列不可以自定义析构器2、需要用 “...

2019-06-24 16:01:01 463

原创 effective morden c++ 3

条款十三优先使用const_iterator对于iterator与const_iterator它们是两个不同的类型,而不是说一个是另一个加上/除去const修饰符,故static_cast、remove_const等是做不到其间的相互转换的。因此,只要能加cosnt,那就加上cosnt,即你不需要改变容器成员的时候尽量用const_iterator。这里要提到一点,con...

2019-06-24 16:00:56 322

原创 effective morden c++ 2

条款七区分()与 {}3中初始化方式int x(0)int x = 0int x{0} //相当于int x = {0}int x //没有初始化在类内成员初始化时等号与大括号均可,但是小括号不行对于不可复制的对象则不可用"="对于大括号而言{}不允许进行隐式的窄化内建型转换(高精度 -> 低精度,因为低精度存储不了高精度){int, double}若...

2019-06-24 16:00:49 241

原创 effective morden c++1

条款一、模板型别推导T的推断忽略const(指向目标不可变的const可以推断), volatile等,因为T只是一个副本而已T& 推断出实际的类型左值/右值而非引用,并且不会把数组型[ ]推断成pinter类型(还可以推断出数组的元素数),或把函数推断成函数指针。const T& 无特殊T&&把左值推断成左值引用,右值推断成右值,即使得结果为左值/...

2019-03-07 23:37:29 220

原创 effective stl (四)

条款四十一ptr_fun, mem_fun, mem_fun_ref的来由均用以配接对象容器,指针容器与一般函数。ptr_fun配接普通函数与一般容器,即直接使用函数指针调用函数。mem_fun配接存储对象指针的容器与成员函数,即使用 ->* 方式调用相应成员函数。mem_fun_ref配接存储对象的容器与成员函数,即使用 .* 方式调用相应的成员函数。三者返回的都是...

2019-01-11 21:44:30 107

原创 effective stl(四)

条款三十二若要删除元素,在remove一类算法后使用erase删除元素remove并不能做到真的移除元素,只是把需要remove的元素使用之后应当留下的元素进行填充,然后返回一个迭代器指向第一个应当被移除的元素的位置或end()remove_if和unique同理故使用erase(remove(begin(),end(),val), end());     ...

2019-01-10 22:33:07 125

原创 effective stl(三)

条款二十二切勿直接修改set或multimap的键而map和multimap则永远别修改作为键的对象set和multiset可使用const_cast结合迭代器来修改不用做排序的键对象的其他属性。但最好的做法是拷贝一份,对拷贝进行修改,移除旧值,加入改变的值。    条款二十三考虑用排序的vector代替关联容器关联容器提供对数级的查找时间,且每个元素带...

2019-01-07 23:20:00 107

原创 effective stl(二)

条款十三vector与string优于动态分配数组不必使用delete也不必担心delete两次相同的指针    条款十四使用reserve来避免不必要的内存重分配vector与string的内存扩张1、分配两倍的空间2、拷贝(可以的话会移动)原来的元素到新的空间3、释放原来的空间(拷贝的话需要先析构原来的元素) 相关函数size()个数...

2019-01-05 21:53:58 86

原创 effective stl(一)

条款一谨慎选择你的容器简单地说:array 不可变序列数组vector 可变序列数组string 字符串list 含头结点的双向链表deque 可双头访问的逻辑上线性的序列forward_list 单向链表    条款二不要尝试编写容器类型无关的代码原因是没有真的统一的接口,每个容器的实现基本没有什么相似之处,统一拥有的接口少之又少,与其...

2019-01-01 20:14:22 141

原创 opengl回顾(二)[2]

接上篇,我们进一步得解释和分离我们的代码首先我们回顾一下,绘制三角的步骤1、写出组成三角的顶点数据,三组顶点每组均由3个float分别代表x,y,z坐标2、创建顶点缓冲对象3、创建顶点数组对象3、绑定缓冲对象与数组对象4、告知opengl如何解释顶点,解释的是第几组顶点,并激活这组顶点5、编写实际的顶点着色器与片段着色器,着色器处理的是一个顶点/一个像素(着色器代码存在...

2018-11-20 15:02:47 269

原创 opengl环境配置

配置一个visual studio下可以使用opengl的环境话不多说,不会提什么cmake什么外网下载,百度网盘链接走起链接:https://pan.baidu.com/s/18K4_hSiQ4D7zN1c6hVEgeQ 提取码:x94q 解压后含两个文件夹,include文件夹包含之后要使用的头文件,lib则为需要的依赖库,还有两个需要添加到项目中的文件。咱们一步一步来添加。...

2018-11-17 21:00:12 201

原创 opengl回顾(二)

在一的基础上绘制一个三角形理论:opengl使用图形渲染管线来把2D坐标转换成3D坐标,他可以分为两部分:一是把3D坐标转换到屏幕的2D坐标,二是为这些2D坐标转变成有颜色的像素。图形渲染管线接受一组3D坐标,将其转换成屏幕上的2D像素,其中经过这样几个阶段3D顶点坐标输入->顶点着色器->形状图元装配->几何着色器->光栅化->片段着色器->混...

2018-11-17 00:16:46 909

原创 opengl回顾(一)

创建一个最简单的窗口所需要的步骤:1、添加需要的头文件#pragma once#include <glad/glad.h>#include <GLFW/glfw3.h>2、选择自己的glfw版本号,并设定绘制模式glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//设定的是主版本号 3glfwWindo...

2018-11-13 20:34:34 129

原创 class 大小计算

笔试面试时常碰到的问题,话不多说,如下:class大小计算(visual studio下):1、non-static data member的大小2、virtual函数的vptr3、virtual base class 的 virtual base class pointer4、齐位造成的补足空间(可能补在成员间可能补在对象边界)   一、non-static ...

2018-11-12 21:11:57 1412

原创 inside the c++ object笔记(二)

chapter3class的大小1、语言本身的负担,如virtual function,virtual base class带来的虚指针,指向其虚函数表,或虚函数表偏移的位置。2、编译器对特殊情况的优化,处理一个empty base object的基类时,是否会优化掉其用来占位的1bytes。3.、alignment(齐位),可能补充在成员之间也可能补充在类的边界,32位补到4的倍...

2018-11-12 19:56:19 191

原创 inside the c++ object笔记(一)

chapter1structstruct声明,class定义只会警告,实际由定义的关键字决定 对象对象之中的变量在内存中的顺序为:同access section中按照声明顺序,不同的access section按照section写的顺序 c++对象模型对象内:non-static data members(非静态数据成员)                  ...

2018-11-01 17:33:03 116

原创 effective c++ 老笔记(五)

条款四十二使用typename 当模板中使用T类型中的某个类型名称的时候需要加上typename,因为系统默认T::name是在调用某个成员函数/变量,typename T::name 才是使用T的name类型。这个情况有两个例外。一是在继承列表中不能使用typenametemplate<typename T>class Derived : public Bas...

2018-10-29 23:32:55 95

原创 effective c++的老笔记(四)

第三十二条款public继承意味着is-a关系,并且基类的每一个功能都应该在派生类上发挥同样效果,否则is-a关系不成立,如基类为矩形,派生为正方形,在代码上就不属于is-a关系。     第三十三条款不要遮掩基类的成员(public继承来的)在使用public继承的时候,结合using声明和重载(override)来替换不要的版本并保留需要的其他版本(usin...

2018-10-27 15:28:29 84

原创 effective c++的老笔记(三)

条款二十二1、务必对成员变量使用private,然后用函数读取它们,看似多次一举,实际上使用函数读取可以保证每次都进行正确的值检测,并且可以在用户无需了解的情况下计算/读取方式、可以细微得划分只读/只写。type getNum(){}这个函数返回的可以是一个成员的值,这个成员储存了需要的值(在内存次要时)return member;也可以在函数内调用相应的成员进行计算(在内存重...

2018-10-23 23:35:24 79

原创 effective老笔记(二)

条款十二使用一个类来管理你的资源(即RAII,获取即初始化)在这个类的析构函数中释放管理的指针条款十三可以的话,使用shared_ptr<>和unique_ptr<>(不可复制/拷贝)来代替内置指针,复制RAII类的时候应当像这两个类一样:复制管理的底层资源->shared;或阻止拷贝,或将控制权转让,不过unique是阻止了拷...

2018-10-18 23:27:31 99

原创 effective 的老笔记回顾(一)

第一条款使用const / enum inline 来代替你的#define如define一个常量数值#define num 1.333使用num出错的时候会报错 #$@%@#$%1.33!@#!@意义不明const float num;//const代替class A{ static float num;};float A::num = 1.333;//静态...

2018-10-13 22:31:06 142

空空如也

空空如也

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

TA关注的人

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