std::list<int> l{1,2,3};
std::reverse(l.begin(), l.end()); // 1
l.reverse(); // 2
我想我应该更喜欢list::reverse()
。只是想知道上面的代码中1和2之间是否有任何区别?例如性能
答案 0 :(得分:1)
不同之处在于list::reverse
可以通过更改节点之间的内部指针来重新排列列表。来自std::reverse
的{{1}}将移动值(即使序列不是标准容器,也会有效)。
在您的特定情况下,使用<algorithm>
数据类型,如果移动两个指针而不是交换两个int
是一个胜利,那就不那么明显了。如果重要的话,你可能想要运行一些基准测试。