![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 83
shadow_lr
Game Developer
展开
-
c++中返回值优化(RVO)和命名返回值优化(NRVO)介绍
RVO和NRVO介绍前言半年前就想写一篇关于RVO和NRVO的介绍,但碍于没什么时间去写博客。在跟身边人进行学术探讨的时候,会发现部分人可能尝到了编译器给它做返回值优化的好处,知道这段代码被优化了,但为什么 如何去做,却不知道。因此,为了尝试说明RVO和NRVO的好处、使用场景、局限性等,在看了数个StackOverflow的讨论之后,有了这篇博客。RVO(返回值优化(Return Value Optimization))如果函数返回一个无名的临时对象,该对象将被编译器移动或拷贝到目标中,在此时原创 2022-03-07 16:10:37 · 4013 阅读 · 1 评论 -
c++ 聚合/POD/平凡/标准布局 介绍
聚合/POD/平凡/标准布局 介绍原创 2022-02-17 12:52:10 · 2081 阅读 · 0 评论 -
C++ 特性进阶学习总结(一)(三/五/零之法则、RAII、CRTP、RTTI、RTTR)
三/五/零之法则、CRTP、RAII、RTT、类型擦除、auto与std::vector<bool::reference、不能有const_cast<>(T)的原因,c++20初始化表达式原创 2022-02-11 13:26:58 · 2241 阅读 · 0 评论 -
More Effective C++ 条款(1-11)总结
More Effective C++ 基础议题(条款1-4)总结条款1:仔细区别pointers和references如果有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表)这个变量,那么应该使用pointer,因为可将pointer设为null,反之设计不允许变量为null,那么使用reference以下这是有害的行为,其结果不可预期(C++对此没有定义),编译器可以产生任何可能的输出 char *pc = 0; // 将 pointer 设定为nul原创 2021-12-23 16:18:56 · 732 阅读 · 0 评论 -
C++STL—pair<int,int>与unordered_map的结合使用
因为unordered_map内部是由哈希表实现的,哈希表中的每一项为一个桶,分别装着键和值,原stl中不包含pair<int,int>类型的键,所以需要自定义#include <bits/stdc++.h>using namespace std;// 分别计算出内置类型的 Hash Value 然后对它们进行 Combine 得到一个哈希值// 一般直接采用移位加异或(XOR)得到哈希值struct HashFunc{ template<typename T,原创 2021-04-19 14:39:31 · 3604 阅读 · 2 评论 -
内存的分配和回收实验(首次适配、下次适配、最佳适配、最坏适配)
第6次实验 内存分配与回收模拟实验目的通过使用位图或空闲表,跟踪内存使用情况,模拟和评价不同的内存分配算法;熟悉内存分配和回收管理过程;实验内容假设内存容量为256KB,并且划分成1KB大小的块,也即每个内存单元为1KB。一个进程所需要的内存为3到10个单元。同时假设一个作业在运行过程中所需内存的大小不变。模拟包括3部分实现特定的内存分配算法(first fit,next fit, best fit, worst fit)四种实现内存回收模拟每种内存分配策略对应原创 2020-12-16 19:22:23 · 4281 阅读 · 3 评论 -
MIT HAKM 算法求二进制形式1的个数
MIT HAKM算法前言: 求32位无符号数的二进制形式中1的个数,这是个经典的题。求解这个题目,我们常规的做法就是将此二进制数右移31此,每次移位后判断最低位的那个是否为1,如果是1,那么计数加一那么有没有更优的解法来减少移位和运算次数呢?在1972年MIT人工智能实验室发布的一本备忘录中,提到了一个非常有趣的算法来解决这个问题,下面我们先来看以下这个算法是怎么做到的上图的count函数即为MIT HAKM算法,其原理则是分治法。运算步骤:一个自然数的多项式表示nN%(n−1)=1n原创 2020-10-10 14:56:27 · 339 阅读 · 0 评论 -
变量存储的五种形式
持 续 性作 用 域链 接 性如 何 声 明自动自动代码块无在代码块中寄存器自动代码块无在代码块中,使用关键字register静态,无链接性静态代码块无在代码块中,使用关键字static静态,外部链接性静态文件外部不在任何函数内静态,内部链接性静态文件内部不再去任何函数内,使用关键字staticconst声明的对象默认为文件的局部变量,此变量只能在那个文件中,不能被其他文件访问,通过指定const变量为ex...原创 2020-10-10 14:30:55 · 464 阅读 · 0 评论 -
C++异常 和 SEH异常 的一点小结
【如何区分异常】 “C++异常” 就是 try{}catch(...){} “SEH异常” 就是 __try{} __except(-1/0/1){} 目前微软所有的VC编译器(从VC6到VC2010),都默认是打开对C++异常的编译支持的(位于项目选项中的“代码生成”->启用C++异常:/EHsc,VC6是Enable Exception h...转载 2020-09-26 17:00:50 · 644 阅读 · 0 评论 -
c++ 左移/右移运算符总结
c++ 左移/右移运算符总结逻辑移位和算数移位明确两种概念(逻辑移位和算数移位)逻辑移位和算数移位有区别,仅针对于有符号整数的左移/右移运算,对于无符号整数,没有这两者运算之间的差距无符号整数采用逻辑移位,无论左移右移都用“0”填充有符号整数逻辑移位即为有符号整数进行左移运算,高位舍掉,低位进行补“0”算数移位即为有符号整数进行右移运算,低位舍掉,低位补“符号位”常数对于常数,只要左移超过31位,就是0#include <bits/stdc++.h>#i原创 2020-09-26 16:31:06 · 5201 阅读 · 0 评论 -
毕业前的flag
c++ 补基础立个flag,希望能在毕业前c++专栏博客200+最近在啃C++ Prime Plus,发现还是有很多基础没有补全和弥补目前进度:Prime Plus(175/745)待看书清单计算机图形学shader入门精要游戏引擎架构...原创 2020-09-26 16:09:57 · 180 阅读 · 0 评论