您能否解释一下find函数如何在STL C ++向量中工作以及它的时间复杂度是什么?
vector<int> v;
if(find(v.begin(),v.end(),element)==v.end())
do this;
else
do this
答案 0 :(得分:2)
看看https://en.cppreference.com/w/cpp/algorithm/find
在“可能的实现”部分中,您可以了解它是如何工作的。详细信息取决于具体的实现方式,具体实现方式可能有所不同。在任何情况下,std::find()
都必须顺序地遍历您的集合,这决定了时间的复杂性。即O(n)。
答案 1 :(得分:2)
返回:范围为
i
且符合以下条件的第一个迭代器[first, last)
:*i == value
。 如果找不到这样的迭代器,则返回last
。复杂性:相应谓词最多
last - first
个应用。
这意味着它将向前进行线性扫描,直到达到与您的element
相等的值为止。