stl问题
1.stl和抽象..
for_each(v.begin(),v.end(),mem_fun(&CWnd::ShowWindow(0)));
其中v是一个vector,里面存放了CButton,CListCtrl等控件!这些都是从CWnd派生的
为什么会出错!
2.set和map容器大家有什么好例子?用处是什么?
解释..
thx.
问题点数:20、回复次数:8Top
1 楼mechgoukiteng(变态是一种生活态度)回复于 2003-08-01 21:27:36 得分 15
第一个问题我不回答,mfc好久不用了,脸红....
set和map被称为关联类型容器,相对于vector,string,list这类而言,好处是供了对数级的插入和删除保证,因为它们本身就是排序好的,缺点是因为底层一般使用tree结构,会多使用几个指针,会影响内存分页
所以一个例子是,排序后的vector使用2分查找的算法(名字记不住,再次脸红)会比使用map::find要快!
Top
2 楼echoher(Est Sularus oth Milthas)回复于 2003-08-02 10:46:31 得分 1
for_each()的第三个参数是个单参数的防函数,mem_fun(&CWnd::ShowWindow(0))不符合要求
在同时要求好的插入和查找时间(不能花时间一次排序)时,用set和map较好
multimap的最好例子是字典Top
3 楼echoher(Est Sularus oth Milthas)回复于 2003-08-02 10:48:55 得分 1
这样写试试,但mem_fun要改
for_each(v.begin(),v.end(),mem_fun)Top
4 楼madmanahong(疯子阿虹)回复于 2003-08-02 17:21:55 得分 0
那第一种方式如何想办法完成?
谢谢!Top
5 楼riverboat(诸葛不亮)回复于 2003-08-03 22:12:36 得分 1
第一个问题可能涉及到虚拟函数的调用问题
建议不要用For_each函数了,,直接枚举吧:
for(vector:iterator i=v.begin; i!=v.end; i++)
(*i).ShowWindow(0);
Top
6 楼madmanahong(疯子阿虹)回复于 2003-08-04 22:31:13 得分 0
使用mem_fun1怎么样呢
?Top
7 楼hlnpro(错误!死机?晕~~~)回复于 2003-08-05 00:59:23 得分 2
mem_fun要是函数对象或者函数指针!Top
8 楼madmanahong(疯子阿虹)回复于 2003-08-07 21:35:15 得分 0
谁说的,mem_fun的类成员函数指针!
应该没有错误...
我就怀疑是参数..Top



