游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4502|回复: 1

新模板: 索引数据

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2007-7-4 11:22:00 | 显示全部楼层 |阅读模式
示例程序:


  1. /**
  2. * IndexData 按名称可理解为索引数据。<br>
  3. * 这个引擎模板即可以使用常规的int,float等做为索引标识,也可以使用String等字符串做为索引标识。
  4. */
  5. #include<stdio.h>
  6. #include<hgl/hgl.h>
  7. #include<hgl/Other.H>
  8. #include<hgl/IndexData.H>
  9.    
  10. using namespace hgl;
  11. void GameMain(int,wchar_t **)
  12. {
  13.     IndexData<int,String> is_data;      //建立一个保存String字串的索引数据列表,以int型数据为索引,保存String数据
  14.     IndexData<String,int> si_data;      //建立一个保存数值的字串索引数据列表,以String数据为索引,保存int数据
  15.    
  16.     String data[10]={   L"Hello",       L"World",       L"Game",        L"Byte",        L"Phantasy",
  17.                         L"Crazy",       L"C/C++",       L"Basic",       L"China",       L"Star" };
  18.    
  19.     //压入10个数据
  20.     int n=10;
  21.     while(n--)
  22.     {
  23.         int val=FastRand();
  24.         
  25.         wprintf(L"push %d = %08X %s\n",n,val,data[n].wc_str());
  26.    
  27.         is_data.Add(n,data[n]);     //压入以int型为索引标识的数据
  28.    
  29.         si_data.Add(data[n],val);   //压入以String型为索引标识的数据
  30.     }
  31.    
  32.     n=10;
  33.     while(n--)
  34.     {
  35.         int index;
  36.         int val;
  37.         String str;
  38.    
  39.         index   =FastRand(10);                      //取一个随机数当索引
  40.    
  41.         str     =is_data.Get(index);                //根据int型索引取出字串
  42.    
  43.         val     =si_data.Get(str);                  //根据String型索引取出数值
  44.    
  45.         wprintf(L"%d = %08X %s\n",index,val,str.wc_str());
  46.     }
  47. }
复制代码




测试输出结果

push 9 = 1C23D2A5 Star
push 8 = BC0E34BD China
push 7 = AB5A72B0 Basic
push 6 = BD563513 C/C++
push 5 = D872C68A Crazy
push 4 = 7FA4B7C9 Phantasy
push 3 = C30029F7 Byte
push 2 = 6E118728 Game
push 1 = FA5B214A World
push 0 = D84F13E8 Hello
6 = BD563513 C/C++
2 = 6E118728 Game
0 = D84F13E8 Hello
6 = BD563513 C/C++
9 = 1C23D2A5 Star
3 = C30029F7 Byte
5 = D872C68A Crazy
9 = 1C23D2A5 Star
9 = 1C23D2A5 Star
8 = BC0E34BD China

71

主题

1330

帖子

2585

积分

金牌会员

Rank: 6Rank: 6

积分
2585
发表于 2007-7-4 22:03:00 | 显示全部楼层

Re: 新模板: 索引数据

和传说中的 stl::map 一样,不知道做过性能测试没有,在不同数据量下速度如何?特别是string类型。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-4 16:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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