【问题标题】:void* data type in linked list? [closed]链表中的 void* 数据类型? [关闭]
【发布时间】:2021-10-21 22:16:45
【问题描述】:

我正在尝试实现键值链表,所以我声明:

template<class S, class T>
class node {
public:
    S key;
    T value;
}

现在我想支持这个功能:

StatusType Add(void *DS, int key, void* value)
{
    // key - the key of the node
    // value - pointer to the value of the node
}

我对使用哪个链表感到困惑,键应该是 int 但值应该是什么?

【问题讨论】:

  • 为什么是void* 而不是template&lt;class S, class T&gt; Add(???, S key, T value);DS 是什么?
  • node 类是强类型的,而Add() 方法是无类型的。这是一个奇怪的组合。你能解释一下为什么以及如何将 C++ 和 C 风格的代码混合在一起吗?
  • 目前还不清楚void* DS 的神秘论点是什么。这是否包含类型信息?
  • 当你说“现在我想支持这个功能”时,你的意思是“现在我想实现一个通用函数来将node 添加到由nodes 组成的链表中" ?
  • 既然你有一个 key/value 对,那么这个链表是不是某种映射?

标签: c++ class templates linked-list


【解决方案1】:

要存储 void* 数据类型,您需要使用 - 等待它 - void* 数据类型。像这样:node&lt;int, void*&gt;

【讨论】:

    【解决方案2】:

    如果我理解正确,您需要实现StatusType Add(void *DS, int key, void* value) 函数,以便C 代码可以使用它,但您自己的实现可以使用C++。

    在这种情况下,显而易见的选择是std::map&lt;int, void*&gt;。链表类型没有键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2017-01-30
      • 1970-01-01
      相关资源
      最近更新 更多