C++中,判断map是否含有某个元素,该如何写代码
时间: 2023-06-09 11:03:28 浏览: 179
C++中vector可以作为map的键值实例代码
在C中,判断map是否含有某个元素,可以用以下方式实现:
1. 使用标准C库中的`stdlib.h`头文件中的`search`函数:
```
#include <stdlib.h>
#include <string.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int key = 3;
int* found = (int*) bsearch(&key, arr, 5, sizeof(int), (void*) &cmpfunc);
if (found) {
printf("Element found in map\n");
}
else {
printf("Element not found in map\n");
}
}
int cmpfunc(const void* a, const void* b){
return (*(int*)a - *(int*)b);
}
```
其中,`search`函数需要传入以下参数:
- `key`: 需要查找的元素
- `arr`: 数组名称或指针
- `nmemb`: 数组中元素的数量
- `size`: 每个元素的大小(以字节为单位)
- `cmpfunc`: 比较函数,用于判断元素是否匹配
如果查找到了对应的元素,`search`函数会返回该元素的指针,否则返回`NULL`。
2. 使用`map`库中的`find`函数。
如果你是在用 STL 中的 `map`,可以使用 `find()` 函数进行查找,例如:
```
#include <map>
#include <iostream>
int main() {
std::map<std::string, int> mymap {
{"apple", 5},
{"banana", 10},
{"orange", 15}
};
std::string fruit = "orange";
if (mymap.find(fruit) != mymap.end()) {
std::cout << "Element found in map\n";
}
else {
std::cout << "Element not found in map\n";
}
return 0;
}
```
其中,`find`函数需要传入以下参数:
- `key`: 需要查找的元素
如果查找到了对应的元素,`find`函数会返回该元素所在的迭代器,否则返回`end()`迭代器。
阅读全文