C++里vector怎么存放函数指针

intma(inta,intb){cout<<a-b<<a+b<<a*b<<a%b<<endl;return0;}intms(intc,intd){cout<<c-d<<... int ma(int a,int b){

cout<<a-b<<a+b<<a*b<<a%b<<endl;
return 0;
}
int ms(int c,int d){
cout<<c-d<<c+d<<c%d<<c*d<<endl;
return 0;
}
int md(int e,int f){
cout<<e-f<<e+f<<e*f<<e%f<<endl;
return 0;
}
int mf(int g,int h){
cout<<g-h<<g+h<<g%h<<g*h;
return 0;
}
int main(){
vector<int*> as(ma(1,2));

return 0;
}这样的话只能放一个,我想把上面4个函数指针都放进去
展开
 我来答
啊沐沐的忧伤
推荐于2016-02-15 · 知道合伙人数码行家
啊沐沐的忧伤
知道合伙人数码行家
采纳数:2606 获赞数:16840
毕业于重庆山峡学院 资深重庆地区和电脑知道达人~

向TA提问 私信TA
展开全部

要动态生成mfc菜单,动态绑定响应命令。

首先把菜单关键词和函数指针绑定在map中,

再通过关键词找到函数来执行。

#include "stdafx.h"

#include <vector>
#include <map>
#include <string>

using namespace std;

// 声明一个函数指针
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_pFunc;//不能这样定义
    //
    vector<pInt> v_pInt;
    v_pInt.push_back(func1);
    v_pInt.push_back(func2);
    int i = v_pInt[0](2);
    i = v_pInt[1](2);
    //
    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);
}20121028更正vector可以直接放函数指针类型,没理解到位。
//vector只能放类型,不能放函数指针变量名
vector<int(*)(int)> v_pFunc;
v_pFunc.push_back(func1);
v_pFunc.push_back(func2);
int k = v_pFunc[0](5);
k = v_pFunc[1](5);
轮接呢呢3
2015-10-30 · TA获得超过5448个赞
知道答主
回答量:2368
采纳率:93%
帮助的人:281万
展开全部
这样子生成的只是通过ma(1, 2)函数得出的n个int*大小的vector容器
正确做法:
typedef int(*Fun)(int, int);
vector<Fun *> vFun(4);
Fun* pa, ps, pd, pf;
pa = ma;
ps = ms;
pd = md;
pf = mf;
vFun.push_back(pa);
vFun.push_back(ps);
vFun.push_back(pd);
vFun.push_back(pf);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chji5471
推荐于2016-09-19 · TA获得超过232个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:162万
展开全部
你这样子生成的只是通过ma(1, 2)函数得出的n个int*大小的vector容器
正确做法:
typedef int(*Fun)(int, int);
vector<Fun *> vFun(4);
Fun* pa, ps, pd, pf;
pa = ma;
ps = ms;
pd = md;
pf = mf;
vFun.push_back(pa);
vFun.push_back(ps);
vFun.push_back(pd);
vFun.push_back(pf);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2015-09-20 · TA获得超过3.1万个赞
知道大有可为答主
回答量:6571
采纳率:86%
帮助的人:886万
展开全部
正确做法:
typedef int(*Fun)(int, int);
vector<Fun> vFun(4);
Fun pa, ps, pd, pf;
pa = ma;
ps = ms;
pd = md;
pf = mf;
vFun.push_back(pa);
vFun.push_back(ps);
vFun.push_back(pd);
vFun.push_back(pf);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhccsd
2014-07-01 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:902万
展开全部
用push_back可以插入
另外,你这也叫函数指针??
追问
呃,不算,能否举个例子呢,有点摸不着头脑
追答
vector用法:
vector as;

as.push_back(ma(1,2));
as.push_back(ma(2,3));
as.push_back(ma(3,4));
as.push_back(ma(4,5));
vector可以看做数组,push_back就是往数组里面插东西
遍历vector:
for(vecor::iterator iter=as.begin();iter!=as.end();++iter)
{
printf("%d\n",*iter);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式