运用map结构解决问题:根据对应值执行相应的函数
时间: 2023-08-03 19:06:40 浏览: 39
可以使用`std::map`结构存储函数指针,根据传入的参数值在map中查找对应的函数指针并执行,从而实现根据对应值执行相应的函数。
以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
// 定义函数指针类型
typedef void (*FuncPtr)();
// 定义函数
void func1()
{
std::cout << "This is function 1" << std::endl;
}
void func2()
{
std::cout << "This is function 2" << std::endl;
}
void func3()
{
std::cout << "This is function 3" << std::endl;
}
int main()
{
// 创建map,存储对应值和函数指针
std::map<int, FuncPtr> funcMap;
funcMap[1] = func1;
funcMap[2] = func2;
funcMap[3] = func3;
// 根据对应值执行函数
int value = 1;
if (funcMap.find(value) != funcMap.end()) {
FuncPtr func = funcMap[value];
func();
}
return 0;
}
```
在上面的示例中,我们首先定义了三个函数`func1`、`func2`和`func3`,然后使用`typedef`定义了一个函数指针类型`FuncPtr`。接着,我们创建了一个`std::map<int, FuncPtr>`类型的map对象`funcMap`,并向其中插入了三个键值对,分别是`(1, func1)`、`(2, func2)`和`(3, func3)`。
最后,我们定义了一个变量`value`,根据该变量的值在map中查找对应的函数指针并执行。如果map中不存在对应的键值对,则不执行任何操作。
需要注意的是,函数指针的类型必须与map中定义的函数指针类型一致。如果需要在函数中传递参数,可以将参数封装到一个结构体中,并传递结构体指针。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)