我的理解是需要做一次拷贝。因为 vector 在内部是用数组实现的,其地址是保证是连续的,无法使用移动语义,将一个 vector 移动到另外的一个 vector 上。
还有一个问题,地址连续是说虚拟内存地址是连续,还是说物理内存地址也是连续?
stackoverflow 上类似问题:
上面说道使用:std::make_move_iterator。令我难以理解的是:为了实现 vector 内部地址的连续,我觉得必须重新将一个 vector 的数据拷贝过来,这里的“移动”是怎么移动的呢?
我理解的“移动”是直接通过指针接管过来。但是如果已经定义了两个 vector,相当于已经申请了两块不连续的内存空间,这个时候如何通过“移动”来不拷贝的直接将 vector 连接起来呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.