如何在c++中使用模板制作泛型映射
How to make a generic map using template in C++
我试图创建一个通用的map
,它将把any datatype
作为它的第二个元素。但是当我尝试创建一个对象时,我得到的错误是argument list for class template is missing
template<typename T1>
class MAP{
public:
std::map<string, T1>Hello;
//MAP(){Hello["Hello"] = 3;}
};
int main()
{
MAP map1;//Error happens here
return 0;
}
这里出了什么问题?
根据您的代码示例,而不是根据问题的描述,看起来您试图实现的内容可以用别名模板表示:
template <typename V>
using MAP = std::map<std::string, V>;
这需要c++ 11的支持。但是,MAP
的实例只能有一个映射类型V
,如您的代码示例所示。
MAP<int> mi; // std::map<std::string, int>
MAP<double> md; // std::map<std::string, double>
如果您想将任何类型存储为映射类型,可以考虑使用Boost的映射。任何
using ANYMAP = std::map<std::string, boost::any>;
ANYMAP m;
m["Hello"] = 42;
m["Bye"] = std::string("message");
但是你必须仔细考虑如何使用这个结构
相关文章:
- 错误处理.将系统错误代码映射到泛型
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 链表的泛型函数remove()与成员函数remove)
- 给定一个类型,如何派生一个泛型更广泛的类型(例如,用于溢出安全求和)?
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何编写将要继承的泛型代码?
- C++17 如何保存泛型可调用对象以供以后使用
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- C++泛型类错误,问题出在哪里?
- C++泛型类,单独实现?
- 将参数传递给泛型 lambda 时复制构造函数不正确
- 泛型枚举和其他类型的重载模板函数
- 使用泛型类型推送到堆栈时出现问题
- 可变参数泛型 lambda 和函数重载
- C++ 泛型和多态性:这种模式可行吗?
- 这些语句是否等效(静态变量、常量变量和泛型)
- 在 stl 映射和列表 (c++) 上进行迭代的泛型循环
- 如何在c++中使用模板制作泛型映射
- 编写泛型包装器:有条件地将模板参数中的不同类型映射到单个类内部类型
- 数据映射:从"any"类到泛型键值映射(C++)