容器2种类型

Gab*_*abe 2 c++ containers

是否有任何C++容器可以存储2种(或更多)类型的值,例如int和chars?我想做一个二十一点游戏.甲板必须包括整数和字符.我不想用数字来初始化它(所以不要说任何事情!).我是一个非常初学的程序员,所以不要太复杂.

Tam*_*más 5

我假设您需要一个能够存储整数或字符的容器.

首先,看看Boost中的 boost::any数据类型,这可能会有所帮助.然后,您可以创建实例容器.boost::any

如果您不想使用boost或看起来有点矫枉过正,请使用union如下:

typedef struct {
    char type;
    union {
        char character;
        int integer;
    };
} my_struct;
Run Code Online (Sandbox Code Playgroud)

然后,union中characterinteger字段和字段的内容占用相同的内存插槽.(好吧,integer因为字符通常只有一个字节,所以使用更多的插槽).然后由你来设置type结构的字段,比如说,'c'如果你存储一个字符,比如'i'存储一个整数,然后使用character或者integer字段访问结构的内容,具体取决于type.

最后,还有Qt 的QVariant数据类型,其工作方式与上述第二种方法类似.