gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:45 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com