我念叨move semantics这个代码给出:编译器如何优化临时对象?
#include <iostream>
using namespace std;
vector<int> doubleValues (const vector<int>& v)
{
vector<int> new_values;
new_values.reserve(v.size());
for (auto itr = v.begin(), end_itr = v.end(); itr != end_itr; ++itr)
{
new_values.push_back(2 * *itr);
}
return new_values;
}
int main()
{
vector<int> v;
for (int i = 0; i < 100; i++)
{
v.push_back(i);
}
v = doubleValues(v);
}
因此,笔者指出的doubleValues
回来以后,可能有多达两个副本发生
一个到一个临时对象在v = doubleValues(v)行上运行矢量分配运算符时,第二个运算符将被返回。
他还声明第一个副本可能会被优化掉。
这是我没有得到:
他是什么意思说:“一进一出的临时对象返回”的时候?它不是由函数返回的临时对象吗?如果是这样,我不明白为什么应该复制到另一个临时对象。
他声明这个临时对象可以被优化掉。如何优化一个临时对象,如何优化?
@Destructor谢谢。不是说我没有浏览问答,但是这样回答**我的问题都是**还是只是最后一个?事情是,目前我没有看到第一个答案。 –