c++中的find()函数
时间: 2024-05-09 08:15:00 浏览: 7
在C++中,`std::find()`函数可以用来查找一个元素在一个容器中第一次出现的位置。该函数定义在头文件`<algorithm>`中。
`std::find()`函数接受两个迭代器作为参数,第一个是容器的起始迭代器,第二个是容器的终止迭代器。它还接受一个要查找的值作为第三个参数。该函数返回一个指向第一次出现该值的迭代器,如果没有找到该值,则返回终止迭代器。
以下是一个使用`std::find()`函数查找整数数组中是否包含某个元素的示例:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
int x = 3;
auto it = std::find(v.begin(), v.end(), x);
if (it != v.end()) {
std::cout << "Found " << x << " at position " << (it - v.begin()) << std::endl;
} else {
std::cout << x << " not found" << std::endl;
}
return 0;
}
```
输出结果:
```
Found 3 at position 2
```
相关问题
c++中find函数讲解
在 C 语言中,没有内置的 find() 函数,但可以通过编写自定义函数来实现相同的功能。
一种实现方式是利用 strstr() 函数,该函数用于在字符串中查找子字符串,并返回第一次出现的位置。因此,可以编写一个函数来利用该函数查找一个字符或字符串在另一个字符串中的位置。
以下是一个示例函数来查找一个字符在字符串中的位置:
```
#include <stdio.h>
#include <string.h>
int find_char(char *str, char ch) {
char *p = strchr(str, ch);
if (p != NULL) {
return p - str;
}
return -1;
}
int main(void) {
char str[50] = "Hello, world!";
int pos = find_char(str, 'o');
if (pos != -1) {
printf("Found at position %d\n", pos);
} else {
printf("Not found\n");
}
return 0;
}
```
输出结果为:Found at position 4
同样,可以编写一个函数来查找一个字符串在另一个字符串中的位置:
```
#include <stdio.h>
#include <string.h>
int find_string(char *str, char *substr) {
char *p = strstr(str, substr);
if (p != NULL) {
return p - str;
}
return -1;
}
int main(void) {
char str[50] = "Hello, world!";
int pos = find_string(str, "world");
if (pos != -1) {
printf("Found at position %d\n", pos);
} else {
printf("Not found\n");
}
return 0;
}
```
输出结果为:Found at position 7
这些示例函数可根据需要进行修改,以实现更特定的查找功能。
C++中的find函数
C语言中的find函数通常不是内置函数,而是由程序员自己编写的函数。该函数的作用是在字符串中查找指定字符或字符串,并返回第一个匹配的位置。具体实现方式可以有多种,以下是一种简单的实现:
```
int find(char *str, char *sub)
{
int i, j;
for (i = 0; str[i] != '\0'; i++) {
for (j = 0; sub[j] != '\0'; j++) {
if (str[i+j] != sub[j])
break;
}
if (sub[j] == '\0')
return i;
}
return -1;
}
```
该函数接收两个字符串参数,分别是要查找的字符串和要查找的子字符串。函数首先在要查找的字符串中进行循环,逐个字符地比较是否与子字符串匹配。如果有不匹配的字符,则退出内层循环,并继续在下一个位置进行匹配。如果匹配成功,则返回当前位置。如果循环结束后仍未找到匹配,则返回-1。