<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                vector的內存會不會泄露? 即使不泄露,怎么能縮小所占空間呢? 我們知道vector有個clear()方法? 原型: ~~~ #include <vector> void clear(); ~~~ 函數clear()刪除儲存在vector中的所有元素. 如果vector的元素是一些object, 則它將為當前儲存的每個元素調用它們各自的析構函數(destructor). 然而, 如果vector儲存的是指向對象的指針, 此函數并不會調用到對應的析構函數. 在第二種情況下, 為了完全刪除vector中的元素則應使用一個類似于下的循環: ~~~ std::vector<SomeObject*> aVector; //The elements of the vector are created with the operand 'new' at some point in the program [...] for(int i=0 ; i<aVector.size() ; i++) delete aVector[i]; aVector.clear(); ~~~ 調用clear之后, vector的尺寸(size)將變成zero. 但它的容量(capacity)卻并不發生變化, vector本身并不釋放任何內存. 如果你想同時做到清空vector的元素和釋放vector的容量, 你可以使用swap技巧。 這樣做會創建一個臨時的空vector, 它將替換希望清空的vector。 **“vector 的 clear 不影響 capacity , 你應該 swap 一個空的 vector。”** ~~~ vector<type>(v).swap(v); ~~~ //對于string則可能像下面這樣 string(s).swap(s); 即先創建一個臨時拷貝與原先的vector一致,值得注意的是,此時的拷貝 其容量是盡可能小的符合所需數據的。緊接著將該拷貝與原先的vector v進行 交換。好了此時,執行交換后,臨時變量會被銷毀,內存得到釋放。此時的v即為原先 的臨時拷貝,而交換后的臨時拷貝則為容量非常大的vector(不過已經被銷毀) 為了證明這一點,我寫了一個程序,如下: ~~~ #include <iostream> #include <vector> using namespace std; vector <string> v; char ch; int main() { for (int i = 0; i<1000000; i++) v.push_back("hello vector"); cin >> ch; // 此時檢查內存情況 占用54M v.clear(); cin >> ch; // 此時再次檢查, 仍然占用54M cout << "Vector 的 容量為" << v.capacity() << endl; // 此時容量為 1048576 vector<string>(v).swap(v); cout << "Vector 的 容量為" << v.capacity() << endl; // 此時容量為0 cin >> ch; // 檢查內存,釋放了 10M+ 即為數據內存 return 0; } ~~~
                  <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>

                              哎呀哎呀视频在线观看