【发布时间】:2018-03-21 23:09:59
【问题描述】:
假设我有一个“人”对象数组:
#include <iostream>
class person{
public:
int age;
std::string name;
};
是否可以获得与每个人的年龄(或姓名)相同大小的数组?我知道如何使用循环来做到这一点,但我希望有某种“地图”可以让我在一行中得到相同的结果。
【问题讨论】:
-
std::transform可以使用。不知道那是不是太过分了。 -
不管你是不是写,都会有一个循环。
-
与range-v3:
persons | ranges::view::transform(&Person::age). -
@AndyG 这是写循环的可怕理由。尽管像
std::copy和std::transform这样的大多数算法只是简单的循环,但它们极大地提高了可读性。每次您无需手动编写循环就可以侥幸成功。 -
@nwp:我同意。 OP 说他们想避免循环,但我想说这最终是不可避免的。