STL使用1: 简单查找算法find和find_first_of
需积分: 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()`函数用于在容器中查找另一个容器中的任意一个元素。这些函数都提供了简单而强大的查找功能,可帮助开发人员快速在容器中寻找特定的元素。
146 浏览量
2011-02-21 上传
257 浏览量
307 浏览量
161 浏览量
吉利吉利
- 粉丝: 29
- 资源: 308
最新资源
- joglohub:博客平台
- AndroidApp:尝试 Android 开发
- 行业分类-设备装置-一种接口扩充装置及其控制方法.zip
- YUV转H264代码 运行于ubuntu系统
- metadata-automation:CLOSER启动的元数据和机器学习工作的网站
- arm.rar android平台可运行的ffmpeg库
- rollup-federation:汇总捆绑器中的模块联合
- 百度向安卓推送消息SDK
- 预测房屋价格
- zset:golang中的排序集
- nginx-1.6.3.zip
- springboot的java
- News-Aggregator-Site:一个可以在一个地方访问所有喜爱的新闻媒体的站点
- date-fns-jalali:贾拉利日历的现代JavaScript日期实用程序库
- 行业分类-设备装置-一种接口调用方法、装置及终端.zip
- tasks