gpt4 book ai didi

c++ - 复制大对象成员变量或多次调用它

转载 作者:太空狗 更新时间:2023-10-29 20:53:54 24 4
gpt4 key购买 nike

考虑下面的类并假设 myVector 变量将存储一个非常大的整数 vector

Class MyClass {

Private:

std::vector<int> myVector;

Public:

std::vector<int> GetVector();
// some other functions that allow me to set myVector
};

std::vector<int> MyClass::GetVector() {

return myVector;
}

在某些函数中,我需要使用 MyClass 对象的 myVector 变量进行一些计算。

像这样复制这个非常大的 vector 是否更好

int function (MyClass object) {


std::vector<int> vector = object.GetVector();



for (int i = 0 ; i<vector.size();i++){

// Do something using vector[i]

};
return 0;

}

或者像这样每次都调用

int function (MyClass object) {




for (int i = 0 ; i<object.GetVector().size();i++){

// Do something using object.GetVector()[i]

};
return 0;

}

还是说最后没关系?

最佳答案

最好避免对大对象按值传递。您应该改为通过引用传递。因为看起来你在 function 中修改了 object 所以你需要传递非常量引用,否则它应该是 const MyClass &object

int function (MyClass &object)

此外,在 GetVector 中,您应该只返回对 myVector 的引用,无需按值返回。

    std::vector<int> & MyClass::GetVector() {
return myVector;
}

关于c++ - 复制大对象成员变量或多次调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049907/

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