如何用适当的OO有效地将100万的私有向量返回给其他几个类

C++:How to efficiently return private vector of 1million to several other classes with proper OO

本文关键字:其他 几个 返回 OO 何用适 有效地 100万 向量      更新时间:2023-10-16

我正在尝试编写政治上正确的面向对象代码,其中包括五个类,其中一些需要在其中一个类中操作私有向量。由于循环引用,我在尝试创建好友功能时失败了,并且在寻找是否有更好的方法。这个向量非常大(100万),我做了大约10万次迭代,所以返回它似乎效率很低。

我的代码框架是:

  class A{
     func(){use a}
     private:
       vector<double> a;
  };
  class B{
    func(){use a and manipulate b};
    ...
    private:
    double *b;
  };
 class C{
   ...
  func(){use a}
  func(){use b}
 };
main(){
 for(j=0; j<500000;j++){
   A a1;
   a1.func(); 
     ....
   B b1;
   C c1;
   b1.func();
   c1.func();
   ....
 }
}

这些类有一个"has-a"关系,所以我不能使用继承。我最终计划将main中的声明放在另一个具有"has-a"关系的类中。

谢谢

可以在类A中有一个方法返回对vector的引用:

class A {
  public:
    vector<double>& getVector() { return a; }
    ...

    const vector<double>& getVector() const { return a; }
如果vector的使用者不修改vector

返回对私有对象的引用并没有什么不好,只要它符合类设计。粗略地说,如果存在向量返回值的事实不是A类的实现细节,而是A的其他用户应该真正意识到的事情。