如何用适当的OO有效地将100万的私有向量返回给其他几个类
C++:How to efficiently return private vector of 1million to several other classes with proper OO
我正在尝试编写政治上正确的面向对象代码,其中包括五个类,其中一些需要在其中一个类中操作私有向量。由于循环引用,我在尝试创建好友功能时失败了,并且在寻找是否有更好的方法。这个向量非常大(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
的其他用户应该真正意识到的事情。
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何返回或护理项目清单基于几个类别
- 我们如何在文本文件中找到C++中的几个单词?
- 关于 std::bitset 构造函数的几个问题?
- 几个 Nt 函数在 Windows 7 x32 上返回STATUS_WAIT_0
- 程序没有问 3 个问题,而是将我对第一个问题的回答用于其他两个问题
- std::stoi 只转换前几个字符
- C++ 通过接口使用从其他几个类继承的类
- 在矢量中使用擦除时双重释放或损坏(快速顶部).如何擦除一个矢量的几个项目知道它们的索引?
- 如何遍历几个每小时一次的根(.root)文件,并将它们组合成更大的每日数据.root文件?
- 我有几个关于参考变量的问题
- 如何将几个变量复制到其他变量
- operator_surrogate_func:未找到匹配的重载和其他2个错误
- 如何在新设计中迁移需要几个额外参数的函数
- 多线程.如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个线程?
- 如何在几个空行后打印文件中的输出
- 如何复制包含指向其他几个成员之一的指针的对象?
- 如何用适当的OO有效地将100万的私有向量返回给其他几个类
- 几个相同大小的向量.给定其中一个向量中的元素,快速访问其他向量中的相应元素