c++ unordered_map 管理函数实例

#include <stdio.h>
#include <Windows.h> 
#include <iostream>
#include <functional>
#include <unordered_map>

using namespace std; 

class Test {
public:
	void Add(int a, int b);
	void Delete(int c, int d); 
	void Mult(int c, int d);
	void init();
	void RunMap(int index);
private:
 	std::unordered_map<int, void(Test::*)(int, int)> m_FuncMaps;
	std::unordered_map<int, function<void(int, int)>> m_FuncMaps2; 
};

void Test::init()
{
	m_FuncMaps[1] = &Test::Add;
	m_FuncMaps[2] = &Test::Delete;
 	m_FuncMaps2[3] = bind(&Test::Mult, this, placeholders::_1, placeholders::_2);  //方法2
} 
void Test::Mult(int c, int d)
{
	printf("is Mult");
}
void Test::Add(int a, int b)
{
	printf("is Add");
}
void Test::Delete(int a, int b)
{
	printf("is Delete");
}

void Test::RunMap(int index)
{
	auto funcIter = m_FuncMaps.find(index);
	if (funcIter != m_FuncMaps.end())  //方法1
	{
		(this->*funcIter->second)(1, 1);
	}
	auto funcIter2 = m_FuncMaps2.find(index);
	if (funcIter2 != m_FuncMaps2.end())  //方法2
	{
		(funcIter2->second)(1, 1);
	} 
}
 
void main() 
{
	Test test;
	test.init();
	test.RunMap(1);
	test.RunMap(2);
	test.RunMap(3);
	getchar(); 
}

 


通过map管理函数,有类似于控件绑定函数一样的效果


参考:https://blog.csdn.net/chailyuan/article/details/53524948
            

         https://blog.csdn.net/xf_zhen/article/details/52224139

          https://blog.csdn.net/mark20170902/article/details/51944182


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值