日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++:vector对象的增长

發布時間:2024/5/14 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++:vector对象的增长 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 容器大小管理操作
  • 容器大小操作函數
    c.shrink_to_fit()請將capacity()減小為與size()相同大小
    c.capacity()不重新分配內存空間的話,c可以保存多少元素
    c.reserve(n)分配能容納至少n個元素的內存空間

    shrink_to_fit只適用于vector、string和deque;
    capacity和reserve只適用于vector和string
    reserve并不改變容器中元素的數量,僅影響vector預先分配多大的內存空間

  • 一個例子
  • //空間增長 int main() {vector<int> ivec;cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;for (vector<int>::size_type ix = 0; ix != 24; ++ix)ivec.push_back(ix);cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;ivec.reserve(50);cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;while (ivec.size() != ivec.capacity())ivec.push_back(0);cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;ivec.push_back(42);cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;ivec.shrink_to_fit();cout << "ivec:size" << ivec.size() << endl << "capaciti:" << ivec.capacity() << endl;return 0; }

    輸出結果:

    ①可以看到當創建一個空的vector容器后,其中所含的元素和分配的內存均為0;
    ②當其增長24個元素后,其中所含元素數量為24,而所分配的空間為28,這是依賴于標準庫的具體實現決定的;
    ③手動使用reserve()為其分配50的內存后,其內存變為50,元素數量沒有改變;
    ④之后將size補滿至內存空間大小,二者皆為50;
    ⑤再向容器中增加一個元素后,其內存空間被分配為75,增長了原內存空間的1/2,這是依賴于編譯器本身的;
    ⑥最后應用shrink_to_fit使得內存空間減少為size的大小

    了解容器大小操作后可對溢出和預分配等做進一步理解

    總結

    以上是生活随笔為你收集整理的c++:vector对象的增长的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。