gpt4 book ai didi

c++ - 如何从 C++ 中的对象数组中获取数据成员数组?

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:58 24 4
gpt4 key购买 nike

假设我有一组“人”对象:

#include <iostream>
class person{
public:
int age;
std::string name;
};

是否可以得到一个与每个人的年龄(或姓名)大小相同的数组?我知道如何用循环来完成它,但我希望有某种“ map ”可以让我在一行中得到相同的结果。

最佳答案

以下是如何使用 std::transform 完成的, std::back_inserter和一个 lambda:

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>

struct person{
int age;
std::string name;
};

int main()
{
std::vector<person> pp = {{16, "Bob"},{32, "Alice"}};
std::vector<int> ages;
std::transform(
pp.begin(),
pp.end(),
std::back_inserter(ages),
[](const person& p) -> int { return p.age; });
for(auto v: ages)
std::cout << v << " ";
}

输出:

16 32 

Live demo

更新:为避免不必要的重新分配,您可以在调用 std::transform< 之前调用 ages.reserve(pp.size())/

关于c++ - 如何从 C++ 中的对象数组中获取数据成员数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668508/

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