C++ 在c+中存储多种数据类型+;数据结构
我正在为一种编程语言制作一个解释器,我正在研究堆栈,但是我还没有找到一个简单的解决方案来解决动态结构,它可以包含多种数据类型。我需要能够在结构中存储多种数据类型,例如int、long、string等。您可以使用union:C++ 在c+中存储多种数据类型+;数据结构,c++,stack,C++,Stack,我正在为一种编程语言制作一个解释器,我正在研究堆栈,但是我还没有找到一个简单的解决方案来解决动态结构,它可以包含多种数据类型。我需要能够在结构中存储多种数据类型,例如int、long、string等。您可以使用union: union someUnion { int a; long int b; char *string; //...any other needed type } 看一看细节。Union通常用于解释器和编译器的实现,例如在yacc(bison)和lex中。顺便
union someUnion
{
int a;
long int b;
char *string;
//...any other needed type
}
看一看细节。Union通常用于解释器和编译器的实现,例如在yacc(bison)和lex中。顺便说一句,您可以检查它们,它们可以大大简化解释器的编码。构建此类数据结构的一种相对简单的方法是使用
联合,如下所示:
union AnyType {
int int_val;
long long long_val;
float float_val;
double int_val;
char char_val;
char *char_prt;
};
但是,这可能不是最经济的,因为此结构的大小等于最大数据类型的大小。更好的方法是为堆栈使用“原始”内存块,将其部分动态地分配给堆栈上的元素。不过,您需要注意数据的对齐方式,以避免将多字节数据放置在偏移量处,从而导致访问速度大大降低或导致运行时错误。您可能想了解联合。或者可能。我如何使用多类型简单、变量union someVar代码>接受int
、long int
、char*
等。