5
4

2 回答 2

11

提供您提到的成员函数 ( merge(), reverse(), remove(), remove_if(), unique(), sort()) 是因为它们比标准标头中的通用算法具有更好的复杂性<algorithm>

count()另一方面,诸如 的成员函数不会比 具有更好的复杂性std::distance(std::begin(some_list), std::end(some_list))

此外,它可能会被误解为std::count通用算法的更复杂的版本,它做的事情基本不同。

于 2013-04-29T13:36:57.587 回答
3

原因是,与您列出的函数不同,使用标准库算法计算计数或大小函数将与​​直接访问底层实现的版本一样快。

您提到的每个成员函数std::forward_list在实现为成员时实际上都更快。特别是,它们可以在不对包含的数据执行任何不必要的复制或移动的情况下进行操作。标准库算法版本需要复制或移动容器中的数据。

于 2013-04-29T13:36:26.360 回答