一、stlfind指南
stlfind是STL库中的一个函数,主要用于遍历容器中的元素并找到符合条件的元素。stlfind是在头文件algorithm中定义的,其函数原型如下:
template InputIterator find(InputIterator first, InputIterator last, const T& value);
其中,first和last是表示所要查找元素范围的迭代器(容器中的首元素和尾元素对应的迭代器),value是要查找的元素的值或者类型。
使用stlfind函数时,需要注意以下几点:
1、stlfind函数返回查找到的元素的迭代器。如果没有找到符合条件的元素,则返回last迭代器。
2、stlfind函数只能查找第一次出现符合条件的元素,不能查找多个。
3、如果查找的容器是一个无序容器(如set、map等),则查找操作时间复杂度为O(logn),如果是有序容器(如vector、deque等),则查找操作时间复杂度为O(n)。
二、stlfindserch函数
stlfindserch函数是stlfind函数的加强版,其函数原型如下:
template ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2);
其中,first1和last1表示要查找的范围,first2和last2表示要查找的子序列范围。
stlfindserch函数用于查找一个序列在另一个序列中第一次出现的位置,如下面的示例代码:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector v1 = {1,2,3,4,5}; vector v2 = {3,4}; auto it = search(v1.begin(), v1.end(), v2.begin(), v2.end()); if(it != v1.end()) cout << "find at " << it - v1.begin() << endl; else cout << "not find" << endl; return 0; }
上述代码中,stlfindserch函数将在v1中查找v2序列第一次出现的位置。在本例中,v2序列在v1中第一次出现的位置是2,因此函数返回值是v1.begin()+2。
三、stlfind函数实例
下面通过实例来进一步了解stlfind函数。
1、在vector容器中查找指定元素的位置:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector v = {1,2,3,4,5,6,7,8,9,10}; int x = 5; auto it = find(v.begin(), v.end(), x); if(it != v.end()) cout << "find at " << it - v.begin() << endl; else cout << "not find" << endl; return 0; }
上述代码中,使用stlfind函数查找容器v中是否含有元素x,如果有,则输出x在容器中的位置。
2、在list容器中查找自定义类型的元素:
#include <iostream> #include <algorithm> #include <list> using namespace std; class Student { public: int num; string name; bool operator==(const Student &s) { return this->num == s.num; } }; int main() { list ls; Student s1 = {1, "张三"}; Student s2 = {2, "李四"}; Student s3 = {3, "王五"}; ls.push_back(s1); ls.push_back(s2); ls.push_back(s3); Student s4 = {2, "李四"}; auto it = find(ls.begin(), ls.end(), s4); if(it != ls.end()) cout << "find " <name << endl; else cout << "not find" << endl; return 0; }
上述代码中,使用stlfind函数在list容器中查找Student类对象s4的位置,如果找到,则输出对应的学生姓名。
四、结语
stlfind函数是STL库中非常常用的函数,用于在容器中查找指定元素。在实际编程中,需要根据具体的情况选择不同的查找方式,以达到最优效果。
原创文章,作者:QCNPN,如若转载,请注明出处:https://www.506064.com/n/330191.html