【问题标题】:How to determine whether an index of an array of unknown type is empty?如何判断未知类型数组的索引是否为空?
【发布时间】:2018-07-21 23:13:51
【问题描述】:
template<typename K, typename V, int N>
    class KVList
    {
        int m_size;
        K m_key[N] = {};
        V m_value[N] = {};

    public:
        KVList& add(const K&, const V&)
        {
             //Check if index is empty or null
                    //Add key value pair
        }
    }

大家好,

我正在创建一个具有 3 个模板参数的模板类。如上所述,我的问题是如何确定某个索引处的数组是否为 NULL 或没有用户定义的值。

目前将这些数据类型作为模板参数传递:

w4::KVList<std::string, double, 5> x;
w4::KVList<std::string, std::string, 5> y;

我在想也许类似于将类型转换为 bool 的方法可能会有所帮助,但我被卡住了。

如何检查索引是否有空值 KVList 接受与上面指定的数据类型或类不同的数据类型或类?

【问题讨论】:

  • 数组元素从不“空”。他们将永远有价值。你初始化你的数组,所以根据类型,它们将具有默认构造的对象或零初始化值。
  • 没有“空”或“空”双精度或整数这样的东西。
  • 明明有键值对,为什么还要问数组?
  • @Schwiftyy 您能否详细说明您真正想用该代码解决什么问题?可能有您可能没有想到的替代方案。例如。 std::optional 可能会派上用场。
  • @TheDude 它应该是一个并行数组,它使用 N 来声明数组的大小,我猜想遍历它。 K 和 V 像字典一样使用。让我改写一下,我想知道数组索引是否不是用户定义的,所以我可以在索引处添加值。

标签: c++ arrays c++11 templates null


【解决方案1】:

我想知道数组索引是否不是用户定义的,所以我可以在索引处添加值。

您可以添加第三个 C 样式数组 bool's

bool isSet[N] = {};

并在设置/取消设置键和值时设置/取消设置值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多