星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 1320|回复: 0

C++ std函数指针容器

[复制链接]

2249

主题

2759

帖子

9603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9603
发表于 2021-1-1 12:04:36 | 显示全部楼层 |阅读模式

注意:容器中只能放类型,不能放函数指针变量名

// 声明一个函数指针
int(*pFunc)(int);
int func1(int nIn){return nIn + 1;}
int func2(int nIn){return nIn + 20;}
typedef int(*pInt)(int);//定义别名才能放在vector中
void main()
{
    pFunc = func1;// 把函数名赋给函数指针
    int n = pFunc(1);
    pFunc = &func2;
    n = pFunc(1);
    //vector<int(*pFun)(int)> v_pInt;//不能这样定义,vector只能放类型,不能放函数指针变量名
vector<int(*)(int)> v_pInt;//正确,函数指针类型
    //vector<pInt> v_pInt;//正确
    v_pInt.push_back(&func1);//必须使用&
    v_pInt.push_back(&func2);
    int i = v_pInt[0](2);
cout<<i<<endl;//3
    i = v_pInt[1](2);
cout<<i<<endl;//22
    //
    map<string,pInt> map_pInt;
    map_pInt.insert(pair<string,pInt>("key1",&func1));//必须使用&
    map_pInt.insert(pair<string,pInt>("key2",&func2));
    int j = map_pInt["key1"](3);
    j = map_pInt["key2"](3);
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2024-12-21 00:45 , Processed in 0.018043 second(s), 20 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

快速回复 返回顶部 返回列表