STL使用1: 简单查找算法find和find_first_of

需积分: 0 0 下载量 109 浏览量 更新于2023-11-29 收藏 482KB PDF 举报
STL的简单查找算法是STL中的一部分,它提供了多个用于在容器中查找元素的函数。其中,最常用的函数是`find()`和`find_first_of()`。 首先,我们来介绍`find()`函数。在STL中,`find()`函数用于在指定的范围内查找特定的元素,并返回指向该元素的迭代器。它的用法如下: ```cpp iterator find(beg, end, val); ``` 其中,`beg`是指向容器中开始位置的迭代器,`end`是指向容器中结束位置的迭代器,`val`是要查找的元素的值。`find()`返回的是一个迭代器,如果找到了指定的元素,则返回指向该元素的迭代器;如果没有找到,则返回`end`迭代器。 接下来,我们介绍`find_first_of()`函数。`find_first_of()`函数用于在一个容器中查找另一个容器中的任意一个元素,并返回指向第一个匹配元素的迭代器。它的用法如下: ```cpp iterator find_first_of(beg1, end1, beg2, end2); ``` 其中,`beg1`和`end1`是第一个容器中的迭代器范围,`beg2`和`end2`是第二个容器中的迭代器范围。`find_first_of()`返回的是一个迭代器,如果找到了匹配的元素,则返回指向第一个匹配元素的迭代器;如果没有找到,则返回`end1`迭代器。 以上是STL中两个常用的简单查找算法的介绍。下面我们来看一些具体的示例代码,以加深对这两个函数的理解。 首先,我们使用`find()`函数在一个向量中查找一个特定的元素: ```cpp #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用find函数查找元素3 auto it = std::find(vec.begin(), vec.end(), 3); if (it != vec.end()) { std::cout << "Element found at index: " << std::distance(vec.begin(), it) << std::endl; } else { std::cout << "Element not found!" << std::endl; } return 0; } ``` 在上面的代码中,我们定义了一个整数向量`vec`,然后使用`std::find()`函数在向量中查找元素3。如果找到了该元素,则输出它在向量中的索引;否则,输出"Element not found!"。 接下来,我们使用`find_first_of()`函数在一个字符串中查找另一个字符串中的任意一个字符: ```cpp #include <iostream> #include <algorithm> int main() { std::string str1 = "Hello World"; std::string str2 = "aeiou"; // 使用find_first_of函数在str1中查找str2中的任意一个字符 auto it = std::find_first_of(str1.begin(), str1.end(), str2.begin(), str2.end()); if (it != str1.end()) { std::cout << "Match found: " << *it << std::endl; } else { std::cout << "No match found!" << std::endl; } return 0; } ``` 在上面的代码中,我们定义了两个字符串`str1`和`str2`,然后使用`std::find_first_of()`函数在`str1`中查找`str2`中的任意一个字符。如果找到了匹配的字符,则输出该字符;否则,输出"No match found!"。 通过以上示例代码,我们可以清楚地看到STL中的简单查找算法的使用和功能。`find()`函数用于在容器中查找指定元素,而`find_first_of()`函数用于在容器中查找另一个容器中的任意一个元素。这些函数都提供了简单而强大的查找功能,可帮助开发人员快速在容器中寻找特定的元素。