C++ - 动态使用引用或局部变量

Mat*_*Mat 4 c++ reference

我想做这样的事情(我知道这不会编译):

struct Container{
    vector<int> storage;
};

float foo(Container* aContainer){
    if(aContainer!=NULL)
        vector<int>& workingStorage=aContainer->storage;
    else
        vector<int> workingStorage; 


    workingStorage.reserve(1000000);
    ....use workingStorage to calculate something......

    return calculated_result;
}
Run Code Online (Sandbox Code Playgroud)

所以 - 如果我将一个Container传递给函数,我希望函数使用容器中的向量来代替局部变量.如果没有提供容器,则应使用局部变量.

当然我可以在函数的最后将局部变量复制到Container的存储中,但这不是我想要做的.

谢谢!

Jam*_*lis 14

为调用者未提供容器的情况创建一个本地std::vector<int>名称local_storage,然后创建对实际要使用的容器的引用.

std::vector<int> local_storage;

std::vector<int>& working_storage = aContainer 
                                        ? aContainer->storage 
                                        : local_storage;
Run Code Online (Sandbox Code Playgroud)

  • @Oli:非正式地和我最好的回忆,是的.这也允许在左侧使用条件运算符,如`(expr?a:b)= T()`. (2认同)