我使用的是一套,因为我想用一个排序容器中快速查找财产等一整套。我想知道如果我要使用find成员方法获取排序容器的利益,或者我也可以使用静态find方法在STL算法?

我的预感是使用静态版本将使用线性搜索,而不是二进制搜索像我想要的。

有帮助吗?

解决方案

您是正确的,所述非成员版本做了线性搜索,而成员版本会做一个O(日志N)的搜索。的std ::集用于O-优化(日志N)插入,检索和删除。

作为定义的一个点,在std ::找到方法不是静态的功能。在这里看到的的各种事物的静态可以在C ++意味着描述。

其他提示

这是实现依赖的可能是有人实施了静态“发现”使用上套一个二进制搜索部分的专业化,但所有的事情考虑,成员函数的版本很可能会表现得更好。

IIRC,斯科特迈尔斯表明在他的著作“有效STL”总是喜欢像找到共同的功能,互换等在非成员函数成员版本,只是因为他们是更可能是一个最佳的执行与无-member版本可以正常依靠的构件版本的性能优势,而你不能总是依赖于一个事实,即对于给定的功能的部分特将存在。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top