为什么80%的码农都做不了架构师?>>>   

union是个好东西,

union是个struct,里面所有成员共享一块内存,大小由size最大的member决定,存取成员的时候会以成员的类型来解析这块内存;

在gamedev中,union可以在这些方面有所作为:

换名:

struct  Rename
... {
public:
    union
    ...{
        struct 
        ...{
            float x,y,z,w;
        };
        struct
        ...{
            float vec[4];
        };
    };
} ;

这样我们既可以根据具体的含义来访问变量,也可以象数组一样的loop;

压缩:

struct  Compression
... {
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相关推荐

  1. Python type hints 之 Optional,Union

    1,前言 type hint 在pep484加入,我个人觉得这种类似于类型约束的(机制)有点违背了python简单.简洁的初衷,在慢慢向c# java 这种强类型语言看齐的节奏. 不过好在不强制使用, ...

  2. C++ 共用体union 的使用

    共用体是什么 共用体将不同的数据类型组织为一个整体, 需要注意的是,共用体在同一时刻只能存储一个数据成员的值., 共用体变量的地址和它的格式成员的地址都是同一地址 共用体的一般形式 union 共用体 ...

  3. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  4. 联合体union和大小端(big-endian、little-endian)

    1.联合体union的基本特性--和struct的同与不同 union,中文名"联合体.共用体",在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(s ...

  5. struct和union的大小问题

    union类型以其中size最大的为其大小 struct类型以其中所有size大小之和为其大小 #include<iostream> using namespace std; int ma ...

  6. 利用c语言结构体和union实现类似c++的public,private的实现

    最近在看strongswan源代码,看到strongswan的代码框架很有意思,用C语言实现类的思想.当我们编写完一个模块,我们需要提供的是H的文件给其他模块使用,我们希望H文件中就只能包含一些公有函 ...

  7. php union all,Union与Union All的区别

    Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并 ...

  8. mysql join union_MySQL中union和join语句使用区别的辨析教程

    union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同 ...

  9. C++/C union使用记一下锅

    //首先,学习编程一定要记得加几个群或者加几个讨论组,因为这样你才能不断地进步还有吵架/滑稽 记一下 关于使用union结构体时遇到的一些坑 To zero-initialize an object ...

最新文章

  1. 02-NLP-01-jieba中文处理
  2. 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代
  3. 有关 Conversion to Dalvik format failed with error 1
  4. xml 名称中不能包含= 字符_可扩展标记语言:XML
  5. JavaScript DOM 编程艺术 --- JavaScript语法
  6. ASP.NET Core 开源论坛项目 NETCoreBBS
  7. 存储过程可重用的代码块_利用软件重用经验进行自动化测试推荐
  8. html标签之间去掉空白,html – 减少两个标签之间的空白差距
  9. 学渣上手 LaTeX 完成毕业论文
  10. 工作总结—HMC5883L应用的一些说明
  11. 运用PS制作3G、4G、5G、6G矢量图方法
  12. 英语语法基础入门怎么学好
  13. python3 print输出不换行
  14. 参考文献中期刊/会议如何缩写
  15. 虚拟机关机出现shutting down... running guests on default URT
  16. 函数——哥德巴赫猜想
  17. 2020年中国人力资源科技“十大趋势”丨研报系列
  18. 22个高级Python知识点总结,干货!
  19. WebSphere 8.5.5 静默安装及升级补丁
  20. 即时零售再加码,深耕蓝海的达达集团或将迎来市值新升浪?

热门文章

  1. Vue三大核心之三(插槽)
  2. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
  3. “朝阳群众”APP上线!解读怎么做一款深入群众的应用
  4. 使用bat脚本添加JAVA_HOME和修改PATH
  5. 【DAY8】关于多线程的练习
  6. 理解CSRF(跨站请求伪造)
  7. LCP 19. 秋叶收藏集
  8. 93.接收上游的响应
  9. python comprehension_Python从题目中学习:List comprehension
  10. php动态网页设计制作作业成品