我有以下设置
class obj {
public:
int a();
int b();
int c();
int d();
};
std::vector<obj> obj_vector;
//Fill obj_vector
并且我想访问这些方法(这是针对需要单独的整数 vector 的接口(interface))。
void func(vector<int>a ,vector<int> b,vector<int> c,vector<int> d);
我最初认为扩展 vector 是最好的方法,但有人警告我不要这样做。
我已经实现了
get_a_vec(vector<obj>);
等等,但这有点笨拙。有什么好的替代品吗?
提前致谢!
最佳答案
编写一个函数,从单个对象中检索所需的成员。
然后将该函数传递给 std::transform
。
例如,如果您有一个 int get_a_member(obj&)
函数,只需调用
std::vector<int> avec;
std::transform(obj_vector.begin(), obj_vector.end(), get_a_member);
如果您想要更复杂或可重用的函数,请将其改为仿函数。然后您可以在其构造函数中将参数传递给它(例如告诉它要返回哪个成员)。
关于c++ - 从对象 vector 中获取成员 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854821/