C++ 11中的std :: forward_list swap()实现

Sam*_*rsa 3 c++ stl c++11

我的假设是,在列表本身std::list<>swap函数中,通过交换锚节点来完成.节点可以访问前一个节点并轻松更新上一个节点的下一个指针,指向另一个列表的锚点; 但这不可能完成std::forward_list(嗯,它可能是,它只是非常昂贵).

如果我的假设是正确的,是如何swap()实现在std::forward_list有效的方式?虽然我们是在它,如何swap()为实现iteratorstd::forward_list

Jas*_*son 5

A std::forward_list只是一个单链接而不是双链接列表std::list,因此您只需交换列表headtail指针即可完成swap()操作.