这种引用的使用不正确吗?

lez*_*lon 1 c++ reference temporary

我有以下代码:

std::vector<A>& Get() { return some_object; };

for(int i=0; i<Get().size(); ++i) {
    x->push_back(Get()[i]);
}
Run Code Online (Sandbox Code Playgroud)

但是当我第一次调用size()时,我得到了垃圾值.我想某些临时的东西会被删除,但我不确定...有人能告诉我发生了什么吗?

编辑:我some_object是一个静态向量,所以在这个例子中它永远不会被删除

fre*_*low 5

我建议更换for循环.我不相信循环.太多的地方容易爬虫.

std::vector<A>& v = Get();
x.insert(x.end(), v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)