stl中的 map,很好用,不过是消耗空间为代价

解决方案 »

  1.   

    其实stl中的map便可实现,包装一下就成了;简单给你写成一个类:typedef std::map <CString, CString> mapStrToStr;
    class Dict
    {
    public:
       Dict(){}
       ~Dict(){
           if (!m_map.empty()) m_map.clear()
       }
       //查找词条
       LPCSTR LookUp(LPCSTR lpszKey) {
           mapStrToStr::iterator keyFound;
    keyFound = m_map.find(sKey);
    if (keyFound != m_map.end())
        return ((*keyFound).second).c_str();
    else
        return NULL;
       }
       //插入“关键串-串值”至参数词典,即是插入词条
       void Insert(LPCSTR lpszKey, LPCSTR lpszValue){
            m_map.insert(mapStrToStr::value_type(lpszKey, lpszValue));
       }
    private:
       mapStrToStr m_map;
    }
    // 以上代码,均是直接写,未经过调试。请调试后,修改确定无误,再使用。
    // 举例
    main () {
       Dict dict;
       dict.insert("小王", "800830200");
       dict.insert("小杨", "800830201");
       dict.insert("小红", "800830202");
       CString sNo;
       sNo = dict.LookUp("小王"); // 如果有记录,则sNo= "800830200", 否则 sNo = "";
    }
      

  2.   

    可以使用CMapStringToString更理想的应该根据自己的需要,设计类来处理
    毕竟排序、查询、动态元素的管理是c语言入门的必学技!
      

  3.   

    C++中有CMap等,来建立映射关系,实现字典