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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.使用reserve避免不必要的内存分配

發(fā)布時(shí)間:2024/4/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.使用reserve避免不必要的内存分配 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

vector、string可以自動(dòng)增長(zhǎng)來容納更多的元素。

每當(dāng)需要更多空間時(shí),就調(diào)用與realloc類似的操作。realloc操作分為4個(gè)部分:

  • 分配一塊大小為當(dāng)前容量的某個(gè)倍數(shù)的新內(nèi)存。在大多數(shù)實(shí)現(xiàn)中,vector和string的容量每次以2的倍數(shù)增長(zhǎng),即每當(dāng)容器需要擴(kuò)張是,它們的容量即加倍。
  • 把容器的所有元素從舊的內(nèi)存中拷貝到新的內(nèi)存中。
  • 析構(gòu)掉內(nèi)存中的對(duì)象。
  • 釋放舊內(nèi)存。
  • 涉及到內(nèi)存的分配、釋放、拷貝、析構(gòu)等步驟,這個(gè)過程將非常耗時(shí)。

    reserve()可以使重新分配的次數(shù)降低,只有當(dāng)元素個(gè)數(shù)等于當(dāng)前容量時(shí)仍需插入才會(huì)重新分配。

    與容量和大小相關(guān)的4個(gè)成員函數(shù):

    • size():當(dāng)前容器中有多少個(gè)元素。
    • capacity() :當(dāng)前分配的內(nèi)存最多可以容納多少個(gè)元素。
    • resize(n):改變當(dāng)前容器中已有元素的個(gè)數(shù),即size() = n。如果n > size(), 使用默認(rèn)構(gòu)造函數(shù)構(gòu)造n-size()個(gè)元素。如果n < size(),析構(gòu)多出的size()-n個(gè)元素。函數(shù)調(diào)用之后,size() = n。
    • reserve(n):強(qiáng)迫容器把它的容量變?yōu)橹辽偈莕,前提是n不小于當(dāng)前的大小。這通常會(huì)導(dǎo)致重新分配,因?yàn)槿萘啃枰黾印?如果n比當(dāng)前的容量小,則vector忽略該調(diào)用,什么都不做;而string則可能把自己的容量減為size()和n中的最大值,但是string的大小肯定不變。)

    當(dāng)一個(gè)元素需要被插入而容器的容量不夠時(shí),就會(huì)發(fā)生重新分配過程。因此,避免重新分配的關(guān)鍵在于,盡早地使用reserve,把容器的容量設(shè)為足夠大的值,最好是在容器剛被構(gòu)造出來之后就使用reserve

    原來的代碼:

    std::vector<int> datas; for (int idx = 0; idx < 1000; ++idx)datas.push_back(idx);?

    這個(gè)操作會(huì)導(dǎo)致2-10次的重新分配。

    修改如下:

    std::vector<int> datas; datas.reserve(1000); for (int idx = 0; idx < 1000; ++idx)datas.push_back(idx);?

    這個(gè)操作將不會(huì)發(fā)生重新分配,效率大幅度提升。

    通常有兩種方式來使用reserve以避免不必要的重新分配。
    第一種方式是,若能夠確定知道或大致預(yù)計(jì)容易中最終會(huì)有多少個(gè)元素,則此時(shí)可使用reserve。在這種情況下,就像上面代碼中的vector一樣,你可以簡(jiǎn)單地預(yù)留適當(dāng)大小的空間。
    第二種方式是,先預(yù)留足夠大的空間,然后,當(dāng)把所有數(shù)據(jù)都加入以后,再去除多余的容量。

    總結(jié)

    以上是生活随笔為你收集整理的7.使用reserve避免不必要的内存分配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产一区亚洲 | 亚洲一区二区三区三州 | 日本黄色的视频 | 日韩啊啊啊 | 无码精品在线观看 | 天天草夜夜操 | 国产原创91 | 五月婷婷视频在线观看 | 美女露出让男生揉的视频 | 国产群p视频 | 少妇无码一区二区三区免费 | 精品爆乳一区二区三区无码av | 深夜免费在线视频 | 天堂网8| 秋霞欧美在线观看 | 涩涩av| 色噜噜狠狠狠综合曰曰曰88av | 国产精品天美传媒入口 | 国产成人免费视频 | 91娇羞白丝网站 | 一个色亚洲 | 精品人妻久久久久一区二区三区 | 国产精品99精品无码视 | 狠狠操网站 | 丝袜制服中文字幕 | 91久久国产综合久久91精品网站 | avtt久久| 红色假期黑色婚礼2 | 国产三级在线观看 | 香蕉污视频在线观看 | 操日本女人 | 欧美夫妻性生活视频 | 国产精品久久久久久一区二区 | 第一次破处视频 | 久久久99精品免费观看 | 国产精品第二十页 | 三上悠亚一区二区在线观看 | av剧情在线 | 欧美污视频在线观看 | 欧美91精品久久久久国产性生爱 | 小泽玛利亚一区二区三区视频 | 手机看片在线观看 | 日日日操操操 | 日本少妇性生活 | 国产成人在线观看 | 一区二区三区欧美 | 国产黄色小视频在线观看 | 欧美性动态图 | 午夜伦理剧场 | 欧美成人黑人xx视频免费观看 | 少妇人妻互换不带套 | 欧美人与物videos另类 | 国产三级午夜理伦三级 | 毛片黄色片 | www.日本色 | 亚洲精品一区二区 | 九九免费在线视频 | 国产又粗又长又黄视频 | 亚洲av无码国产精品永久一区 | 日日摸夜夜 | 91水蜜桃 | 在线成人黄色 | 星铁乱淫h侵犯h文 | 国产91香蕉| 高清精品xnxxcom | 国产福利小视频 | 黄色精品视频在线观看 | 黄视频免费看在线 | 亚洲欧美一区二区激情 | www.桃色| 欧美尹人 | 国产www性 | 日韩激情影院 | 欧美久久综合网 | 美女网站av| 国产99久久久国产精品免费看 | 伊人精品影院 | 中文在线а√在线 | 黄色网页免费 | 97影院 | 久久成年 | 久久精品天堂 | 精品视频日韩 | 呦呦网| 黄色在线免费 | 国产成人精品网站 | 国产丝袜美腿一区二区三区 | 黄色男人的天堂 | 久久99热这里只频精品6学生 | www色综合| 99久久精品日本一区二区免费 | www.成年人 | 动漫涩涩免费网站在线看 | 欧美日韩网站 | 神马午夜51 | 一级黄色视| 久久久久久久综合色一本 | 黄色视屏在线播放 | 亚洲免费观看高清在线观看 |