<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                迭代器是一種行為類似指針的對象,而指針的各種行為中最常見的便是解引用(*)和成員訪問(->),此外還有operator++。因此,迭代器最重要的編程工作是對operator*和operator->進行重載工作。關于這部分的代碼,可以參考class auto_ptr。 迭代器一般會和某種容器相關聯,指向某種類型的元素,這種元素的類型(value_type)叫做相應類型。常用的相應類型有五種: value_type:迭代器所指對象的類型。 difference_type:兩個迭代器之間的距離。 reference:容器內元素的引用。 pointer:容器內元素的指針。 iterator_category:表示迭代器類型,根據迭代器類型激活重載函數。關于這一點,可以參考STL算法advance()。 如果某個函數的返回類型為迭代器的相應類型,那么靠“模板實參推斷”是無法實現的,而“特性萃取”技術能夠很好的解決這個問題。 為了獲得迭代器的相應類型,STL采用了一種稱為特性萃取的技術,能夠獲得迭代器(包括原生指針)的相應類型: ~~~ template <class Iterator> struct iterator_traits { typedef typename Iterator::iterator_category iterator_category; typedef typename Iterator::value_type value_type; typedef typename Iterator::difference_type difference_type; typedef typename Iterator::pointer pointer; typedef typename Iterator::reference reference; }; ~~~ 針對原生指針的特化版本: ~~~ template <class T> struct iterator_traits<T*> { // 特化版本,接受一個T類型指針 typedef random_access_iterator_tag iterator_category; typedef T value_type; typedef ptrdiff_t difference_type; typedef T* pointer; typedef T& reference; }; template <class T> struct iterator_traits<const T*> { // 特化版本,接受一個T類型const指針 typedef random_access_iterator_tag iterator_category; typedef T value_type; typedef ptrdiff_t difference_type; typedef const T* pointer; typedef const T& reference; }; ~~~ 當然,為了符合STL規范,用戶自定義的迭代器必須添加這些相應類型,特性萃取機才能有效運作。 參考: 《STL源碼剖析》 P80、P85.
                  <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>

                              哎呀哎呀视频在线观看