【问题标题】:What does it mean to have void* as the second template parameter of an std::unordered_map?将 void* 作为 std::unordered_map 的第二个模板参数是什么意思?
【发布时间】:2017-05-29 06:27:42
【问题描述】:

我在看Two dimensional unordered_map 看到了

typedef std::pair<int,int> Coordinates;
typedef std::unordered_map<Coordinates,void *> TwoDimensionalNodes;

void* 作为模板的第二个参数是什么意思?

我当然查看了cppreference.com,发现没有提到void

【问题讨论】:

  • 第二个参数是T - 项目值类型。
  • void* 只是一个泛型指针类型,它与unordered_map 没有任何关系,它只是在这里用作值类型,就像任何其他类型一样
  • 这可能意味着它将保存指向可能不同类型的实例的指针。在使用这些值之前,必须将它们转换回其原始类型。
  • 这可能意味着作者未能以类型安全的方式设计它。

标签: c++ templates stl unordered-map


【解决方案1】:

第二个模板参数是映射类型。通过指定void*,您可以创建一个映射,您可以在其中存储void* 类型的对象。

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多