我想用std::vector::push_back()
將對象轉換爲std::vector
。這似乎是可能的,因爲有一個std::vector::push_back(value_type&& val)
函數。但由於std::vector::push_back(value_type const & val)
的存在,它會複製並重載調用,所以我需要將左值對象轉換爲右值。你如何將左值轉換爲右值?那麼新「左值」會發生什麼?
這是如何完成的?
例子:
struct X { int x; X(int x) : x(x) {} };
int main()
{
std::vector<X> ax;
X x(3);
ax.push_back(x); // <= Want to move x in to vector ax, not copy.
return 0;
}
其實,也許就不能?我問這個,因爲寫這個例子後,我的新問題是:
- 如果我不動
x
到ax
,什麼是x.x
價值?如果X
有一個明確的析構函數,當它離開作用域時x
會發生什麼?
哦,就這麼簡單吧?最後我的另外兩個問題呢? – Adrian
如果它有明確的一個?雖然我寫了一個簡單的例子,但我希望有一個完整的理解,並且爲什麼我規定'如果X有一個明確的析構函數......' – Adrian
@Adrian:我編輯了覆蓋該問題的答案 –