我有一个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; } }; vectorppl = { 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(); });
最后,它仍然与你已经拥有的基本相同.