<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## **boost::circular\_buffer** 之前接手過一個模塊,模塊內需要記錄某張表最近12次的數據,這種情況就需要有一個可以“循環利用空間”的數據結構,當空間滿時,新數據自動替換掉老數據的內容,這就是`boost::circular_buffer`的作用。 可以把`boost::circular_buffer`想象成一個環,首尾相接,當元素數量達到上限時,從首部自動開始重用之前的空間。 ## 1\. 構造 `circular_buffer`的構造比較簡單,傳入的參數為環形緩沖區的空間大小。模板類型為存儲的元素類型。 ~~~ #include <iostream> #include "boost/circular_buffer.hpp" int main() { boost::circular_buffer<int> c(10); std::cout << c.size() << "\t" << c.capacity() << std::endl;//0 10 return 0; } ~~~ ## 2\. 使用 使用上`circular_buffer`最常用的是從兩端寫入數據,也支持數據的`insert erase` ~~~ #include <iostream> #include "boost/circular_buffer.hpp" template<class T> void print(const T& container) { for (auto& x : container) { std::cout << x << " "; } std::cout << "full:" << container.full() << "\tsize:" << container.size() << "\tcapacity:" << container.capacity() << "\tis_linearized:" << container.is_linearized() << std::endl; } int main() { const int cb_max_size = 5; boost::circular_buffer<int> cb(cb_max_size); for (int i = 1; i <= cb_max_size; ++i) { cb.push_back(i); } // 1 2 3 4 5 full:1 size:5 capacity:5 is_linearized:1 print(cb); cb.push_back(6); // 2 3 4 5 6 full:1 size:5 capacity:5 is_linearized:0 print(cb); cb.push_back(7); // 3 4 5 6 7 full:1 size:5 capacity:5 is_linearized:0 print(cb); cb.pop_back(); // 3 4 5 6 full:0 size:4 capacity:5 is_linearized:0 print(cb); cb.pop_front(); // 4 5 6 full:0 size:3 capacity:5 is_linearized:0 print(cb); cb.rotate(cb.begin() + 2); // 6 4 5 full:0 size:3 capacity:5 is_linearized:1 print(cb); cb.set_capacity(10); // 6 4 5 full:0 size:3 capacity:10 is_linearized:1 print(cb); return 0; } ~~~ 注意`linearize`可以把緩沖區線性化成一個特殊的普通數據,`is_linearized`可以檢測緩沖區可否線性化,即`cb.begin()`正好是緩沖區內存開始的位置。 `circular_buffer`的使用非常簡單,上面的代碼包含了大部分用法。
                  <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>

                              哎呀哎呀视频在线观看