迭代器适配器: 移动迭代器
2024年1月1日 2024年1月1日
move iterator
将迭代器转换成移动迭代器
make_move_iterator
1make_move_iterator(c.begin()),
解引用运算符
*
表达式类型为右值引用, 值类别为速亡值
使用移动迭代器实现StrVec::reallocate
将所有元素的资源移动构造到first指向的内存空间
1void StrVec::reallocate() 2{ 3 auto newcapacity = size() ? 2 * size() : 1; 4 auto first = alloc.allocate(newcapacity); 5 6 auto last = unitialized_copy(make_move_iterator(begin()), make_move_iterator(end()), first); 7 8 free(); 9 elements = newdata; 10 first_free = last; 11 cap = elements + newcapacity; 12}