收起
vector中存的就是你定义的东西啊,比如 vector 你move就没有啥意义,比如 vector,那么move会有很大的性能提升。所以它并没有存储什么特殊东西,主要看你定义的这个对像在move语义下是否高效。
但是vector扩容会申请新的更大的连续内存,move调用移动构造新生成的对象并不会重新申请内存,而是使用原对象的内存。这不是矛盾了吗
move调用移动构造新生成的对象并不会重新申请内存,感觉你这里理解有问题,需要新内存啊,我们以移动构造 std:string 为例,还是需要内存存放地址和长度,只是字符串的实际存放地址没有重新开辟。这已经快很多了,在没有移动语义之前,整个string对象都需要重构
对啊。实际对象存放的地址没有重新开辟,那这个对象又是怎么放到vector新申请的连续内存中的呢。
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!