首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么没有给std::forward_list一个count()成员函数?

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

Stack Overflow用户
提问于 2013-04-29 13:31:41
回答 2查看 4.1K关注 0票数 5

我理解为什么std::forward_list member function,因为O(1)版本会扰乱某些splice()重载的复杂性,而且O(N)版本将与标准库的所有其他容器不一致。

另外,std::liststd::forward_list都有其他几个成员函数,它们的语义与标准库的<algorithm>角具有相同的语义(merge()reverse()remove()remove_if()unique()sort())。

那么,为什么没有一个具有返回count()语义的O(N)复杂性的std::forward_list成员函数呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 13:36:57

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

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

此外,它可能被误解为std::count泛型算法的更好的复杂性版本,它做了一些基本不同的事情。

票数 11
EN

Stack Overflow用户

发布于 2013-04-29 13:36:26

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16279936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档