2015-12-21 673 views
0

我需要一个代码,它需要使用std :: map并创建一个数据类型及其大小的列表。例如“BYTE”装置'无符号字符'“BOOL”'布尔'“INT”装置'无符号整型'如何从模板使用std :: map得到数据类型

输入我需要从用户那里获取字符串(数据类型名称),并从那里我需要创建列表。一旦用户请求指定特定数据类型的指针,我需要分配内存并发回指针。

我在C++ std::map of template-class values上发现了一些东西。但我不知道如何初始化和使用它。 有没有其他方法可以做到这一点。 (我对模板和std :: map的使用很陌生)

在此先感谢。

+0

我不确定你在问什么,但是如果你想将这些类型中的任何一个存储在同一个地图中,你可能需要查看'boost :: variant'或'boost :: any'。 – NathanOliver

+0

为什么你需要使用'std :: map'?我会尝试解决这个问题,如果'map'帮助我使用它,但是在你知道如何解决问题之前决定使用'map'并不是一个好主意。 –

+1

C++是严格类型的语言,所以“返回”指针应该有一个有效的类型,例如std :: map 或std :: map 。每种类型都是独特的,不属于任何层次结构。你能发布你期望你的函数的用户使用返回值吗? – akhisp

回答

1

我认为你需要的是提供一个好的缓冲区,并且你包装什么缓冲区并提供一个接口。我通常使用std :: vector作为一个大缓冲区(就像来自Internet的网页一样),一旦收缩,就使用std :: vector :: data来访问指针。另一种方法是使用“新”运营商。无论您想要传入哪种数据类型都无关紧要。提供类型后,尺寸会自动计算。旧的malloc()函数也可以工作。有一件事你必须记住的是,在每个“新”之后,应该有一个“删除”。在每个“malloc”之后,必须有一个“free”。接口可能只是一个空指针,尽管这样做不安全。