c++ - 将模板类型参数的映射存储到 C++ 中的 Vector : Visual Studio

标签 c++ c++11 visual-studio-2012 vector data-structures

我有这样的情况,我需要实现接受任何对象类型参数的“ map ”,因为到目前为止,我不知道我将把哪种类型的参数存储到 map 中。稍后我需要将该 Map 存储到一个 vector 中。 我这样写:

 vector<Map>vect;

但是编译器说,我需要为 Map 指定参数类型。有没有办法像上面那样声明?如果我需要实现模板,谁能清楚地说出如何在 map 中实现模板。我对 C++ 非常陌生。 在 Java 中,我可以直接将映射存储到 ArrayList 中,但在 C++ 中,这对我来说非常复杂。请帮助我。

最佳答案

由于不知道map中对象的类型,可以使用void*或者unique_pointer。

std::vector<std::map<KeyType, void*>> vect;

或者如果您实际上是说所有值都继承自 Object,那么:

std::vector<std::map<KeyType, Object*>> vect;

作为旁注,您从未提及 key 类型,所以也许您指的是 std::set 而不是 map?

关于c++ - 将模板类型参数的映射存储到 C++ 中的 Vector : Visual Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825349/

相关文章:

c++ - 适用于原始指针上的迭代器以及 unique_ptr 上的迭代器的模板化函数

c# - 为什么在 Visual Studio 2012 中禁用复选框 'Prefer 32-bit'?

c++ - 适配器模式 : Why would we need to subclass the Adaptee?

c++ - std::string 附加线程安全天真的解决方案?

c++ - 容器内的 'const' 值实际上是不允许的吗?

visual-studio-2012 - 无法从 Visual Studio 2012 Ultimate Edition 运行 SpecFlow 场景

c++ - 是否可以使用 cmake 创建 WinRT 项目?

c++ - 提供给类函数宏调用的参数过多

c++ - QtQuickControls,不适用于 Windows

c++ - 为什么有人要创建一个默认的移动构造函数而删除移动赋值运算符?