C++ Primer(第5版) 练习 16.46
练习 16.46 解释下面的循环,它来自13.5节(第469页)中的StrVec::reallocate:
for (size_t i = 0; i != size(); ++i)
alloc.construct(dest++, std::move(*elem++));
环境:Linux Ubuntu(云服务器)
工具:vim
解释
//此循环的目的是将元素从旧内存移动到新内存。
//通过使用 std::move,将左值转换为右值引用,传递给函数。
//循环结束后,旧内存块可以被释放,StrVec 将使用新分配的内存。
for (size_t i = 0; i != size(); ++i)
alloc.construct(dest++, std::move(*elem++));