我想将一个对象移动到std::vector
using 中std::vector::push_back()
。这似乎是可能的,因为有一个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