c++ - 以 vector 形式访问对象 vector 中的成员

标签 c++ vector iteration

我有一个 C++ 类,它作为对象 vector 包含在另一个类中。

class Small
{

public:

   int a;
   int b;    
   int c;
};

class Big 
{
public:

   vector< Small > getSmallVec() const { return m_smallVec;}

private:

   vector< Small > m_smallVec;    
};

我希望能够访问 Small 类的成员本身作为 vector 。换句话说,我想在 Big 中有一个函数,比如

vector<int> getSmallVec_a()

这将返回一个 vector ,其中包含 m_smallVec 中 int Small::a 的每个值。我能想到的唯一方法是迭代 m_smallVec 并复制到一个 int vector 。有没有办法不用复制就可以做到这一点?

最佳答案

如果这是您希望访问数据的方式并且性能很重要,您是否考虑过使用并行 vector ?而不是

  std::vector<Small>

在“大”中你实际上维护了 3 个 vector

  std::vector<int> aVec;
  std::vector<int> bVec;
  std::vector<int> cVec;

0 处的所有元素对应第 0 个“小”,你可以很容易地从 bs 中分离出所有的 as。

这带来了很多烦人的簿记,您必须确保正确并妥善封装。这不是一个更优雅的解决方案,我通常不喜欢这种事情,并且可能会在代码审查中提出质疑,但它可能会为您所描述的操作提供最佳性能。

关于c++ - 以 vector 形式访问对象 vector 中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759668/

相关文章:

c++ - COM 对象的 SAFEARRAY

c++ - 在基于 C++ 范围的 for 循环中获取当前元素的索引

c++ - C++ 中的二维数组帮助

c++ - 模板参数 - 指向模板化类型的指针

c++ - CV4.1 : Failed Assertion in function detectAndCompute level>=0

c++ - 2D 射弹 - 速度和位置 vector

c++ - unique_ptr 与 vector : error: call to implicitly-deleted copy constructor of XXX

c++ - 如何将一个 vector 传递给另一个 vector 推回? (无需创建额外的变量来传递)

python - python函数中的形参和实参

ruby - 遍历嵌套列表中的元素