union[c++] in gamedev
为什么80%的码农都做不了架构师?>>>
union是个好东西,
union是个struct,里面所有成员共享一块内存,大小由size最大的member决定,存取成员的时候会以成员的类型来解析这块内存;
在gamedev中,union可以在这些方面有所作为:
换名:
... {
public:
union
...{
struct
...{
float x,y,z,w;
};
struct
...{
float vec[4];
};
};
} ;
这样我们既可以根据具体的含义来访问变量,也可以象数组一样的loop;
压缩:
... {
public:
bool operator==(const Compression& arg) const ...{ return value==arg.value; }
union
...{
struct
...{
char a,b,c,d,e,f,g;
};
struct
...{
long long value;
};
};
} ;
这样对于集中处理的情况,比如==,就会大幅度提高效率,象在64位机上,只要一次,或者传输数据的情况,压缩解压缩都非常方便;
危险:
匿名的union用法,不是standard,所以在compiler上要确认==>编译器移植性不好;
不同的机器操作系统上数据的size都是不一样,表示不一样,那么在用union的时候,尤其是在移植的时候,都是危险的情况;
但是如果系统,compiler都是一样的话,在合适的地方使用union还是可以的。
原文链接: http://blog.csdn.net/ccanan/article/details/1525500
转载于:https://my.oschina.net/dtec/blog/44723
union[c++] in gamedev相关推荐
- Python type hints 之 Optional,Union
1,前言 type hint 在pep484加入,我个人觉得这种类似于类型约束的(机制)有点违背了python简单.简洁的初衷,在慢慢向c# java 这种强类型语言看齐的节奏. 不过好在不强制使用, ...
- C++ 共用体union 的使用
共用体是什么 共用体将不同的数据类型组织为一个整体, 需要注意的是,共用体在同一时刻只能存储一个数据成员的值., 共用体变量的地址和它的格式成员的地址都是同一地址 共用体的一般形式 union 共用体 ...
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...
- 联合体union和大小端(big-endian、little-endian)
1.联合体union的基本特性--和struct的同与不同 union,中文名"联合体.共用体",在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(s ...
- struct和union的大小问题
union类型以其中size最大的为其大小 struct类型以其中所有size大小之和为其大小 #include<iostream> using namespace std; int ma ...
- 利用c语言结构体和union实现类似c++的public,private的实现
最近在看strongswan源代码,看到strongswan的代码框架很有意思,用C语言实现类的思想.当我们编写完一个模块,我们需要提供的是H的文件给其他模块使用,我们希望H文件中就只能包含一些公有函 ...
- php union all,Union与Union All的区别
Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并 ...
- mysql join union_MySQL中union和join语句使用区别的辨析教程
union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同 ...
- C++/C union使用记一下锅
//首先,学习编程一定要记得加几个群或者加几个讨论组,因为这样你才能不断地进步还有吵架/滑稽 记一下 关于使用union结构体时遇到的一些坑 To zero-initialize an object ...
最新文章
- 02-NLP-01-jieba中文处理
- 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代
- 有关 Conversion to Dalvik format failed with error 1
- xml 名称中不能包含= 字符_可扩展标记语言:XML
- JavaScript DOM 编程艺术 --- JavaScript语法
- ASP.NET Core 开源论坛项目 NETCoreBBS
- 存储过程可重用的代码块_利用软件重用经验进行自动化测试推荐
- html标签之间去掉空白,html – 减少两个标签之间的空白差距
- 学渣上手 LaTeX 完成毕业论文
- 工作总结—HMC5883L应用的一些说明
- 运用PS制作3G、4G、5G、6G矢量图方法
- 英语语法基础入门怎么学好
- python3 print输出不换行
- 参考文献中期刊/会议如何缩写
- 虚拟机关机出现shutting down... running guests on default URT
- 函数——哥德巴赫猜想
- 2020年中国人力资源科技“十大趋势”丨研报系列
- 22个高级Python知识点总结,干货!
- WebSphere 8.5.5 静默安装及升级补丁
- 即时零售再加码,深耕蓝海的达达集团或将迎来市值新升浪?
热门文章
- Vue三大核心之三(插槽)
- 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
- “朝阳群众”APP上线!解读怎么做一款深入群众的应用
- 使用bat脚本添加JAVA_HOME和修改PATH
- 【DAY8】关于多线程的练习
- 理解CSRF(跨站请求伪造)
- LCP 19. 秋叶收藏集
- 93.接收上游的响应
- python comprehension_Python从题目中学习:List comprehension
- php动态网页设计制作作业成品