c语言map函数的实现 c++map函数用法

想通过c++中的map容器实现函数分发,请教各位大神解答下疑惑

因为你使用的map的key是const char *类型,即存储的是一个指针类型,所以在下面的代码中使用find函数就找不到对应的key。这里主要要理解c风格字符串和c++字符串的差异。

创新互联是专业的犍为网站建设公司,犍为接单;提供网站设计制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行犍为网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

可以将map的key类型改为string,修改后代码:

#include iostream

#include string

#include map

//定义函数指针

typedef void (*fun)(const char *);

//定义map容器

std::mapstd::string, fun mapTest;

void myPrintf(const char *pszStr) { std::cout  pszStr  std::endl; }

int main(int argc, char *argv[])

{

std::cout  "map初始化!"  std::endl;

mapTest.insert(std::pairstd::string, fun("myPrintf", myPrintf));

std::string strCmd = "myPrintf";

mapTest["myPrintf"]("123");

bool isFind = (mapTest.find(strCmd) == mapTest.end()) ? true : false;

if (!isFind)

{

mapTest[strCmd]("aaaa");

}

else

{

std::cout  "找不到对应的处理函数!"  std::endl;

}

return 0;

}

执行结果:

c++的map是什么原理?用纯C如何实现?

map是 映射, 有一个对应表。

当A事件发生时代调用什么函数处理

当B事件发生时代调用什么函数处理

当..事件发生时代调用什么函数处理

MFC 的例子:

BEGIN_MESSAGE_MAP(CXxxView, CScrollView)

//{{AFX_MSG_MAP(CXxxView)

ON_COMMAND(ID_FORMAT_FONT, OnFormatFont)

ON_COMMAND(ID_COLOR_TEXT, OnColorText)

ON_WM_VSCROLL() // 调用默认函数处理

ON_WM_LBUTTONDOWN()

ON_WM_LBUTTONUP()

ON_WM_MOUSEMOVE()

//}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)

END_MESSAGE_MAP()

===

C

switch(message) // 事件 id

{

case 1: fun1(); break; // 直接调用

case 2: fun2(); break;

...

default:break;

}

C++map类中find函数的实现

map::find和map::end的返回值的是迭代器类iterator

class iterator类中数据成员是指针,指向map底层实现的红黑树的节点

iterator定义的operator==/!=函数是比较这个指针是否相等

因此与自定义的类是否定义/重载了operator==/!=函数无关

另外想要知道细节,按F11进入源代码调试

c语言实现foldr filter 和 map功能

3个函数的功能是什么?

foldr的terminal输入的是什么?

filter是用来过滤的吧,因为返回值是struct llnode *类型,难道只返回首个过滤到的元素?

c语言map函数用法

标准C语言中没有map函数,map是C++的一个函数,参考以下内容研究一下吧


当前题目:c语言map函数的实现 c++map函数用法
路径分享:http://myzitong.com/article/hgigde.html