如何将对象的属性复制到向量?

 手机用户2502862133 发布于 2023-02-11 12:00

我有一个vector想要将每个对象的属性名称提取到a vector.for-each循环使它正常工作,但有没有更好的方法来使用类似的东西std::copy()并告诉他使用特定的方法(在这种情况下是name()getter)将值复制到我的vector

class Person {
  int a;
  string n;
public:
  Person(int age, string name) : a(age), n(name) {}
  int age() const { return a; }
  string name() const { return n; }
};

vector ppl = { Person(12, "Tim"), Person(21, "Tom") };
vector names;

// question
// copy(ppl.begin(), ppl.end(), ????.name());

for (Person& p : ppl)
  names.push_back(p.name());

copy(names.begin(), names.end(), ostream_iterator(cout, ", "));

Some program.. 7

如何std::transform使用std::back_inserter:

std::transform(std::begin(ppl), std::end(ppl),
               std::back_inserter(names),
               [](const Person& p) -> std::string { return p.name(); });

最后,它仍然与你已经拥有的基本相同.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有