为什么std :: forward_list没有给出count()成员函数?

Tem*_*Rex 5 c++ containers stl c++11 forward-list

我理解为什么std::forward_list 没有size()成员函数,因为O(1)版本会破坏某些splice()重载的复杂性,并且因为O(N)版本会与标准库的所有其他容器不一致.

这也是事实,双方std::liststd::forward_list已经拥有相同的语义从他们的堂兄弟其他几个成员函数<algorithm>的标准库(的角落merge(),reverse(),remove(),remove_if(),unique(),sort()).

那么为什么不提供复杂性的count() 成员函数具有返回的语义?O(N)std::forward_liststd::distance(std::begin(some_list), std::end(some_list))

And*_*owl 11

你提到的成员函数(merge(),reverse(),remove(),remove_if(),unique(),sort())提供,因为他们有更好的比一般的算法的复杂度<algorithm>标准的头.

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

此外,它可能被误解为std::count通用算法的更复杂版本,它执行的操作基本上不同.

  • @rhalbersma:`std :: begin()`和`std :: end()`不仅仅是一个方便; 它们提供了一种通用的方法来获取任何可迭代容器的边界,包括数组. (3认同)