C++ std::move()之后std::vector存储会发生什么情况

C++ std::move()之后std::vector存储会发生什么情况,c++,stl,C++,Stl,我正在调用std::vector.reserve()然后我在该向量对象上调用std::move()。我需要重新分配空间吗?移动是否会更改向量的容量?在移动发生后,[6]只保证其他.empty()==true(其他是从对象移动的),它不保证从向量移动的容量()。因此,您无法确定它是否会改变容量 所以,要回答你的问题: 移动是否会改变向量的容量 这是未指定的。std::move只是一个演员阵容。它对物体没有任何作用。它会更改引用的类型。您对后续的移动构造函数/移动赋值感兴趣。可以从中猜测作为移动赋值

我正在调用
std::vector.reserve()
然后我在该向量对象上调用
std::move()
。我需要重新分配空间吗?移动是否会更改向量的容量?

在移动发生后,[6]只保证
其他.empty()==true
其他
是从对象移动的),它不保证从向量移动的
容量()。因此,您无法确定它是否会改变容量

所以,要回答你的问题:

移动是否会改变向量的容量


这是未指定的。

std::move
只是一个演员阵容。它对物体没有任何作用。它会更改引用的类型。您对后续的移动构造函数/移动赋值感兴趣。可以从中猜测作为移动赋值或移动副本构造函数源的向量的内容。所有实现都尽最大努力避免不必要的内存分配,因此在实践中,如果分配器允许,则moved from对象的容量为空。未指定,然而,如果一个向量在构造move时没有窃取实际内存,或者如果movefrom会分配新的内存,这将是相当奇怪的memory@user463035818嗯,这是真的,但不能保证^^