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