12赞
293
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C++14从可变参数模板创建向量》经验,为你挑选了1个好方法。

假设,我有一个结构

struct A
{
   std::string name;
};

并且想要编写从对象读取字段"name"并将其作为返回的函数std::vector.是否可以通过可变参数模板(或任何非迭代方法)来完成此操作.我的目标是这样的:

template
std::vector function(Ts... ts)
{
    ...
}

在程序中:

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

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



1> LogicStuff..:

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

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

(不需要转发参考)

所发生的是,向量是用初始化列表构造的,由变量参数包构造,同时为每个可变元素应用函数(成员访问运算符).


对不起,刚发现成员变量也是rvalue(/sf/ask/17360801/).不知道这条规则.
推荐阅读
devbox
用户fkise9sswv
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4