gpt4 book ai didi

C++14 从可变参数模板创建 vector

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:29 24 4
gpt4 key购买 nike

假设,我有一个结构

struct A
{
std::string name;
};

并想写一个函数从对象中读取字段“name”并返回它们作为std::vector<std::string> .是否可以通过可变参数模板(或任何非迭代方法)来做到这一点。我的目标是这样的:

template<typename... Ts>
std::vector<std::string> function(Ts... ts)
{
...
}

在程序中:

    A a1, a2, a3, a4;
function(a1, a2, a3, a4);

输出:{a1.name, a2.name, a3.name, a4.name}

最佳答案

适用于 C++11 的非常简单的扩展:

template <typename ... Ts>
std::vector<std::string> function(Ts&& ... ts)
{
return {std::forward<Ts>(ts).name...};
}

(不需要转发引用)

发生的是, vector 是用 initializer list, constructed from the variadic parameter pack 构造的, 而 applying a function (成员访问运算符)用于每个可变元素。

关于C++14 从可变参数模板创建 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com