我正在尝试为基本类型模板化的STL容器实现序列化方法。
我怎样才能推断出,假设有哪些键和值类型可以说是无序映射,这样我就可以根据键/值类型实现适当的逻辑。
我知道模板元编程是实现这一目标的方法,但我们非常感谢一个具体的例子。
答案 0 :(得分:1)
容器定义typedef
来描述其中的内容。
如果T
是地图,多地图,集合或多集,以及它们无序的风格,就像你有一个
T::iterator
和
T::const_iterator
你也有一个
T::key_type
和
T::value_type
请参阅每个容器的规范,以获取它定义的所有类型的完整列表。
这就是你怎么知道容器里的东西。
答案 1 :(得分:1)
这可能足以启动您的项目。这个超级棒的JSON序列化程序使用函数重载来处理要序列化的每个数据类型。 Serialize
的{{1}}重载本身会调用unordered_map
来序列化每个包含对象的键和值。只需添加新的重载即可支持新类型。
我之前为Serialize
更改了Serialize
重载:现在它演示了如何使用类型特征库,以便编译器为任何算术类型选择此重载,而不仅仅是{{1 }}
int
输出
int