stl map的简单用法

来源:互联网 发布:阿发西古兰经诵读软件 编辑:程序博客网 时间:2024/05/16 09:52
 
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include <Graphics.hpp>
  4. #include "Config.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TMaxinConfig gConfig;
  8. //---------------------------------------------------------------------------
  9. //菜单项.5
  10. //配置.2
  11. #define CONFIG(idx, value) /
  12.    m_factory.insert(DATA_TYPE::value_type(DATA_TYPE::key_type(0, idx), value))
  13. TMaxinConfig::TMaxinConfig()
  14. {
  15.    CONFIG( CFG_MENU_ACTIVE,                                 clRed );
  16.    CONFIG( CFG_MENU_DEACTIVE,                               clWhite );
  17.    CONFIG( CFG_XIAN_SHI_LEI_XING,                           1 );
  18.    CONFIG( CFG_XIAN_SHI_YU_HUI,                             1 );
  19.    CONFIG( CFG_XIAN_SHI_SHAN_GE_QIANG_DU,                   100);
  20.    CONFIG( CFG_WHEEL_MENU_IDX,                              -1 );
  21.    CONFIG( CFG_MENU_BACK,                                   clBackground );
  22.    CONFIG( CFG_LAST_LIST_MENU_IDX,                          -1 );
  23.    CONFIG( CFG_CUR_CH,                                      1 ); //通道1
  24. }
  25. //---------------------------------------------------------------------------
  26. int& TMaxinConfig::data(int idx, int ch)
  27. {
  28.    DATA_TYPE::key_type key;
  29.    key.first = ch;
  30.    key.second = idx;
  31.    DATA_TYPE::iterator p = m_data.find(key);
  32.    if(p == m_data.end())                                                         //当前配置中未找到,将出厂设置Copy一份
  33.    {
  34.       p = m_factory.find(key);
  35.       if(p == m_factory.end())                                                   //出厂设置中特定通道的数据未找到,取全局通道[0]
  36.       {
  37.          DATA_TYPE::key_type key_default;
  38.          key_default.first = 0;
  39.          key_default.second = idx;
  40.          p = m_factory.find(key_default);
  41.       }
  42.       if(p == m_factory.end())                                                   //出厂设置中也没有该类型的数据,新建一个值为0的数据
  43.       {
  44.          DATA_TYPE::value_type v(key, 0);
  45.          m_data.insert(v);
  46.       }
  47.       else
  48.       {
  49.          m_data.insert(*p);
  50.       }
  51.    }
  52.    p = m_data.find(key);
  53.    return (*p).second;
  54. }
  55. //---------------------------------------------------------------------------
  56. int& TMaxinConfig::tempData(int idx, int ch)
  57. {
  58.    DATA_TYPE::key_type key;
  59.    key.first = ch;
  60.    key.second = idx;
  61.    DATA_TYPE::iterator p = m_tempData.find(key);
  62.    if(p == m_data.end())                                                         //当前配置中未找到,新建一份
  63.    {
  64.       DATA_TYPE::value_type v(key, 0);
  65.       m_tempData.insert(v);
  66.       p = m_data.find(key);
  67.    }
  68.    return (*p).second;
  69. }
  70. //---------------------------------------------------------------------------
  71. void TMaxinConfig::Serialize(const char *fileName)
  72. {
  73. }
  74. //---------------------------------------------------------------------------
  75. void TMaxinConfig::DeSerialize(const char *fileName)
  76. {
  77. }
  78. //---------------------------------------------------------------------------
  79. int& TMaxinConfig::operator[](int idx)
  80. {
  81.    return data(idx, 0);
  82. }

非常好用。

 

原创粉丝点击