c++ - 从对象 vector 中获取成员 vector

标签 c++ inheritance stl

我有以下设置

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/

相关文章:

c++ - 使用 "using"语法将标准容器成员方法引入其子类的范围对运算符不起作用

java - 为什么我们只在 Java 中使用 (String args[ ])?

c++ - 为什么#include 只完成声明和定义?

c++ - LLVM:如何找出使用的是哪种类型?

c# - 为什么抽象类的构造函数应该被保护,而不是公共(public)的?

c++ - 为什么不同类别的 STL 算法调用不同?

c++ - Qt:访问由 uitools/uiloader 生成的小部件的信号/插槽

Java 泛型、单例和静态方法

javascript - 如何在typescript中模拟多态?

c++ - 使用 STL std::merge() 将 vector 的两个部分合并到另一个 vector 中