反向算法和list :: reverse之间的区别

时间:2015-10-13 06:46:44

标签: c++ stl

std::list<int> l{1,2,3};
std::reverse(l.begin(), l.end());  // 1
l.reverse(); // 2

我想我应该更喜欢list::reverse()。只是想知道上面的代码中1和2之间是否有任何区别?例如性能

1 个答案:

答案 0 :(得分:1)

不同之处在于list::reverse可以通过更改节点之间的内部指针来重新排列列表。来自std::reverse的{​​{1}}将移动值(即使序列不是标准容器,也会有效)。

在您的特定情况下,使用<algorithm>数据类型,如果移动两个指针而不是交换两个int是一个胜利,那就不那么明显了。如果重要的话,你可能想要运行一些基准测试。