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

Tam*_* B. 3 c++ iterator stl stdvector

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

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<Person> ppl = { Person(12, "Tim"), Person(21, "Tom") };
vector<string> names;

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

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

copy(names.begin(), names.end(), ostream_iterator<string>(cout, ", "));
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 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(); });
Run Code Online (Sandbox Code Playgroud)

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