<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 13.5 wxHashMap wxHashMap類是一個簡單的,類型安全的并且效率很不錯的哈希映射類,它的接口是標準的STL容器接口的一個子集.實際上,它是在標準的std:: map和非標準的std::hash_map之后才可以設計的.通過用于創建哈希表的宏,你可以選擇下面的幾種類型及其組合作為哈希表的鍵類型或者數據類型:int,wxString或void*(任意類型). 有三個用來定義哈希映射類的宏.要定義一個名字為CLASSNAME,鍵類型為wxString,值類型為VALUE_T類型的哈希表,你可以使用下面的語法: ``` WX_DECLARE_STRING_HASH_MAP(VALUE_T, CLASSNAME); ``` 要定義一個名字為CLASSNAME,鍵類型為void*,值類型為VALUE_T類型的哈希表,使用下面的定義: ``` WX_DECLARE_VOIDPTR_HASH_MAP(VALUE_T, CLASSNAME); ``` 要定義一個名稱為CLASSNAME,鍵類型和值類型任意類型的哈希表,使用下面的定義: ``` WX_DECLARE_HASH_MAP(KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME); ``` HASH_T和KEY_EQ_T是用來作為哈希算法和比較算法的函數. wxWidgets提供了三種預定義的哈希算法: wxIntegerHash用來作為整數的哈希算法(int, long, short和它們的無符號變體都可以), wxStringHash用來作為字符串的哈希算法(wxString, wxChar*, char*都可以), wxPointerHash用來作為任何指針類型的哈希算法.類似的也有三個預定義的比較函數: wxIntegerEqual, wxStringEqual和wxPointerEqual. 下面的代碼演示了wxHashMap的使用方法: ``` // 我們要存放在哈希表中的類 class Customer { public: int CustID; wxString CustName; }; // 定義和實現我們自定義的哈希表. WX_DECLARE_HASH_MAP(int, Customer*, wxIntegerHash, wxIntegerEqual, CustomerHash); void HashTest() { // 定義一個自定義哈希表的實例 CustomerHash MyHash; bool IsEmpty = MyHash.empty(); // will be true // 創建幾個對象 Customer* CustA = new Customer; CustA->CustID = 10; CustA->CustName = wxT("Bob"); Customer* CustB = new Customer; CustB->CustID = 20; CustB->CustName = wxT("Sally"); Customer* CustC = new Customer; CustC->CustID = 5; CustC->CustName = wxT("Dmitri"); // 將對象增加到哈希表 MyHash[CustA->CustID] = CustA; MyHash[CustB->CustID] = CustB; MyHash[CustC->CustID] = CustC; int Size = MyHash.size(); // will be 3 // count函數返回0或1, 含義為:20這個關鍵值在哈希表中嗎? int Present = MyHash.count(20); //將返回1 // 我們哈希表的自定義節點類型 CustomerHash::iterator i = MyHash.begin(); // 遍歷哈希表 while (i != MyHash.end()) { // first函數返回鍵值,second返回數據 int CustID = i->first; Customer* Cust = i->second; // 作一些處理 // 然后處理下一個數據 i++; } // 將鍵值為10的數據移出哈希表 MyHash.erase(10); // 移出不會導致數據自動釋放 delete CustA; // 返回指定鍵值的一個節點 CustomerHash::iterator i2 = MyHash.find(21); // 判斷是否找到節點 bool NotFound = (i2 == MyHash.end()); // 將返回True // 這次將返回有效的節點 i2 = MyHash.find(20); // 直接移除節點 MyHash.erase(i2); delete CustB; // 副作用: 下面語句導致哈希表中插入一個鍵值為30,值為NULL的節點. Customer* Cust = MyHash[30]; // Cust將等于NULL // 清除哈希表中的節點 MyHash.clear(); delete CustC; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看