我想做这样的事情(我知道这不会编译):
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)