【发布时间】:2012-08-02 16:21:51
【问题描述】:
我有以下代码:
std::vector<A>& Get() { return some_object; };
for(int i=0; i<Get().size(); ++i) {
x->push_back(Get()[i]);
}
但是当我第一次调用 size() 时,我得到了垃圾值。 我在想一些临时的被删除了,但我不太确定...... 谁能告诉我发生了什么?
编辑:我的some_object 是一个静态向量,所以在这个例子中它永远不会被删除
【问题讨论】:
-
我认为我们需要知道 some_object 是什么来回答这个问题,因为答案取决于它的范围和生命周期。
-
如果您不更改
some_object,请考虑参考const。 STL 容器不是线程安全的,请确保在访问它时大小不会改变。否则请确保将变量或成员保持在范围内。 -
可能没问题,这取决于
some_object是什么。它是否存在于函数之外? -
是从静态或全局对象的构造函数内部(直接或间接)执行 for 循环吗?
-
你应该包括
some_object的声明和初始化。