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个函数指针都放进去 展开
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个函数指针都放进去 展开
5个回答
推荐于2016-02-15 · 知道合伙人数码行家
关注
展开全部
要动态生成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);
展开全部
这样子生成的只是通过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);
正确做法:
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这样子生成的只是通过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);
正确做法:
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);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正确做法:
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询