以 C++ 数据结构存储多种数据类型
Store multiple data types in c++ data structure
我正在为一种编程语言制作解释器,并且正在研究堆栈,但是我无法为可以包含多种数据类型的动态结构找到简单的解决方案。 我需要能够在结构中存储多种数据类型,例如整数、长整型、字符串等。
构建这种数据结构的一种相对简单的方法是使用 union
,如下所示:
union AnyType {
int int_val;
long long long_val;
float float_val;
double int_val;
char char_val;
char *char_prt;
};
但是,这可能不是最经济的,因为此结构的大小等于最大数据类型的大小。更好的方法是为堆栈使用"原始"内存块,将其部分动态处理给堆栈上的元素。但是,您需要注意数据的对齐方式,以避免将多字节数据放在偏移处,从而使访问速度变慢或导致运行时错误。
您可以使用联合:
union someUnion
{
int a;
long int b;
char *string;
//...any other needed type
}
有关详细信息,请查看此链接。Union 通常用于解释器和编译器的实现,例如在 yacc(野牛)和 lex 中。顺便说一句,您可以检查它们,这些可以大大简化解释器的编码。
相关文章:
- 多维数组存储三种不同的数据类型?
- 如何读取文件并将该文件分类为不同类型的数据,这些数据都存储在结构中的特定数组中
- 生成一个类Name_class并将两种数据类型存储在一个向量中
- C++:灵活且能够存储多种数据类型的数组
- 将元音与字符串数据类型的字符串分开,并将其存储在新字符串中
- 什么是在C 中存储结果INT*的最佳数据类型
- 如何将预定义数据类型的值存储到数组中并输出它
- 在 JavaScript 中,值的数据类型存储在何处以及如何存储?
- 如何制作一个为程序的每个运行中存储不同数据类型的向量
- 将临时值存储为某种数据类型时,算术运算的标准规则是什么
- 通用B树,用于存储自定义对象/数据类型
- 如何检查程序是否超过数据类型存储
- 哪种数据类型用于存储文件名和文件大小的使用
- 如何在一个向量中存储具有不同数据类型的对象
- C++ 从文本文件数据类型读取为结构,并将数据存储在列表的向量中
- 如何在用户数据中存储值类型
- 在 C 程序中存储"binary"数据类型
- 将多调数据类型存储到unique_ptr向量中
- 有没有任何方法可以在运行时将不同的数据类型存储在一个变量中
- 是否可以将Boost uint128_t数据类型存储为原始int类型?