<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            c語言中map的用法簡介

            時間:2024-12-17 14:21:12 C語言 我要投稿
            • 相關推薦

            c語言中map的用法簡介

              C++實際開發的過程會經常使用到map。下面小編給大家整理了c語言中map的用法,供大家參閱。

              map是一個key-value值對,key唯一,可以用find進行快速的查找。其時間復雜度為O(logN),如果采用for循環進行遍歷數據時間復雜度為O(N)。如果map中的數據量比較少時,采用find和for循環遍歷的效率基本沒有太大的區別,但是在實際的開發過程中,存儲在map中的數據往往是大量的,這個時候map采用find方式效率比遍歷效率高的多。

              確定采用find方式查找數據后,我們需要考慮存儲map的空間復雜度,對于基礎數據類型的數據(int char等)這里就不做討論。本文討論的是map中存儲的數據結構struct情況。

              1、如果map中的key為struct此時,需要先對struct進行操作符重載,關于這部分內容可以參考C++ 重載操作符示例

              2、map中的key只能是對象,而不能是指針。(這一點尤為重要)。

              下面給出三個map定義進行說明:

              std::map* pmapNHSymbolInfo1

              std::map* pmapNHSymbolInfo2

              std::map* pmapNHSymbolInfo2

              其中,pmapNHSymbolInfo1、pmapNHSymbolInfo2中使用find正常,遍歷也正常,pmapNHSymbolInfo3使用find查找不到對應的數據(數據已經存在,find不到,遍歷可以找到)

              原因:std::map* pmapNHSymbolInfo2在find的時候是根據指針進行查找的。而在數據時,數據都是new的,每次new出的地址是不一樣的,在find數據時,根據地址查找結果就找不到數據。通過遍歷是取出地址中內容一一比較,這樣能夠找到數據。

              pmapNHSymbolInfo1、pmapNHSymbolInfo2兩種方式都可以使用find方式查找數據,但是pmapNHSymbolInfo1中Stru_NHSymbol為對象,這樣會使map占用空間比較大,pmapNHSymbolInfo2的Stru_NHSymbol為指針,存儲時地址占用空間小,但是每次都是new處理來的,所有一定要記住使用完成后一定要,否則會出現內存泄露。

              3、map插入數據2中方式比較

              std::map* pmapNHSymbolInfo

              pmapNHSymbolInfo->(std::make_pair(pNHSymbolkey, pNHSymbol));該方式的key如果出現重復,則會插入數據失敗;

              (*pmapNHSymbolInfo)[objNHSymbolkey] = pNHSymbol;該方式的key如果出現重復則直接覆蓋掉原來的數據,永遠不會出現插入失敗的問題。

              結論:C++ map中key不要使用指針,請直接使用對象。

            【c語言中map的用法簡介】相關文章:

            c語言中map的基本用法10-28

            c語言中char的用法簡介09-29

            c語言中bit的用法11-01

            C語言中assert用法09-22

            C語言中的assert用法10-10

            c語言中default的用法05-26

            c語言中多個if的用法11-12

            c語言中getch的用法06-01

            c語言中邏輯或的用法05-23

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院