如何遍历可变参数模板以填充 POD 数组

用户5580578

如何在 POD 数组(c 数组)中总结我的可变参数模板方法的参数?目前我不知道迭代参数......

enum class ParamId {kTyp1, kTyp2, kTyp3};

struct Params
{
   ParamId* ids; 
   int32 count; 
};

template <typename... Args>
Params add (const ParamId& value, Args&&... values)
{
   constexpr int32 count = sizeof... (Args); 
   ParamId* params = new ParamId[count];

   for(int32 i=0; i<count; i++)
   {
     params[i] = ????
   }

    return Params {params, count};
}

编辑:我没有使用 for 循环,而是使用反向迭代方法。不幸的是,我需要另一种方法。也许有更好的方法。我将第一个参数添加到我的列表中。

enum class ParamId {kTyp1, kTyp2, kTyp3};

struct Params
{
   ParamId* ids; 
   int32 count; 
};

template <typename... Args>
Params add (ParamId value, Args&&... values)
{
   constexpr int32 count = 1 + sizeof... (Args); 
   ParamId params [count];

    int32 num = 0;
    params[num] = value;
    iterate(&params[0], num++, values...); 

    return Params {params, count};
}

template <typename... Args>
void iterate (ParamId* params, int32 num, ParamId value, Args&&... values)
{
    params[num] = value;
    iterate(params, num++, values...); 
}

void iterate (ParamId* params, int32 num) {}
霍尔特

你可以这样做1

constexpr std::size_t count = 1 + sizeof... (Args); 
ParamId* params = new ParamId[count] { value, values... };

假设你想把它value作为第一个元素,你在问题中说但不是代码所做的。

但在我看来,你最好使用std::vectordirectlry。

1请参阅此答案以供参考。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从constexpr数组创建可变参数模板

可变参数模板和C数组

可变参数模板与默认模板参数组合

通过可变参数模板中的参数组

将 C 数组转换为可变参数模板参数

C++ 14:如何使用可变参数模板创建值 1-100 的数组

将int数组转换为可变参数模板

C ++可变参数模板:根据可变参数模板大小列出所有数组元素的优雅方法

如何通过可变参数模板将多个构造函数参数转发到数组初始化器列表?

用于对可变数量的数组进行排序的可变参数模板

使用可变参数模板列表初始化数组并放置新的数组

如何返回具有大小的POD数组引用?

“解压缩”数组以使用可变参数模板调用函数

从可变参数模板数组引用构造函数初始化双嵌套std :: array

将可变参数模板扩展为静态成员数组

遍历C ++可变参数模板

如何用重复的可变参数填充数组?

可变模板参数的模板类型数组

如何遍历可变参数模板参数以创建可变数量的局部变量?

可变参数模板:遍历类型/模板参数

如何存储可变参数模板参数?

如何从可变参数模板获取参数

如何用模板参数包的内容填充数组?

如何遍历 Rails 模板上的数组数组?

如何使用客户端API返回的Pod条件数组?

可变参数模板对

如何遍历动态大小的数组并传递可变参数中的参数作为属性?

如何重载可变参数模板函数?

递归可变参数模板如何工作?