zoukankan      html  css  js  c++  java
  • C++ Union实验

    union介绍

    union(共用体,联合体),所有成员占用同一段内存,修改一个成员会影响其余所有成员。

    在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的。union变量所占用的内存长度等于最长的成员的内存长度。

    定义格式

    union 共用体名{
        成员列表
    };
    

    测试代码

    #include <iostream>
    using namespace std;
    
    template<typename T, int Dims>
    struct Vector
    {
        inline T & operator[](int i) { return data[i]; }
        inline T & const operator[](int i) const { return data[i]; }
    
        T data[Dims];
    };
    
    template<typename T>
    struct Vector<T,4>
    {
        inline T & operator[](int i) { return data[i]; }
        inline T & const operator[](int i) const { return data[i]; }
    
        union {
            T data[4];
            struct
            {
                T x;
                T y;
                T z;
                T w;
            };
        };
    };
    
    struct struct_union
    {
        union
        {
            struct
            {
                int i;
                int j;
            };
            struct
            {
                int i;
                int j;
            } s;
        };
    };
    
    int main()
    {
        Vector<int, 4> v1;
        for(int i=0;i<4; ++i)
            v1[i] = i;
    
        cout << v1.x << " " << v1.y << " " << v1.z << " " << v1.w << endl;
    
    
        struct_union su;
    
        su.i = 1;
        su.j = 2;
        cout << su.s.i << " " << su.s.j << endl;
    
        return 0;
    }
    
  • 相关阅读:
    min_25筛入门
    [湖南集训]更为厉害/谈笑风生
    [ARC060D] 最良表現
    [CQOI2007]矩形
    [SCOI2009]粉刷匠
    PAT乙级1030
    PAT乙级1028
    PAT乙级1029
    PAT乙级1026
    PAT乙级1027
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/12565089.html
Copyright © 2011-2022 走看看