最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素

 更新時(shí)間:2021年07月27日 10:14:07   作者:誰吃薄荷糖  
vector是一種動(dòng)態(tài)數(shù)組,本文主要介紹了C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

vector是一種動(dòng)態(tài)數(shù)組,在內(nèi)存中具有連續(xù)的存儲(chǔ)空間,支持快速隨機(jī)訪問。由于具有連續(xù)的存儲(chǔ)空間,所以在插入和刪除操作方面,效率比較慢。vector有多個(gè)構(gòu)造函數(shù),默認(rèn)的構(gòu)造函數(shù)是構(gòu)造一個(gè)初始長度為0的內(nèi)存空間,且分配的內(nèi)存空間是以2的倍數(shù)動(dòng)態(tài)增長的。在push_back的過程中,若發(fā)現(xiàn)分配的內(nèi)存空間不足,則重新分配一段連續(xù)的內(nèi)存空間,其大小是現(xiàn)在連續(xù)空間的2倍,再將原先空間中的元素復(fù)制到新的空間中,性能消耗比較大。

vector 基本用法:

  • front()返回頭部元素的引用,可以當(dāng)左值
  • back()返回尾部元素的引用,可以當(dāng)左值
  • push_back()添加元素,只能尾部添加
  • pop_back()移除元素,只能在尾部移除
  • erase(iterator) 是根據(jù)位置進(jìn)行刪除,如果想要?jiǎng)h除某個(gè)元素,需要找到當(dāng)前元素的迭代器位置,再進(jìn)行刪除
  • insert() 結(jié)合迭代器位置插入指定的元素

我們使用vector時(shí)候,有時(shí)候會(huì)插入一些動(dòng)態(tài)內(nèi)存數(shù)據(jù)(例如new出來的指針插入到vector中)。這時(shí)候我們一定要注意C++的內(nèi)存管理,因?yàn)镃++的內(nèi)存管理原則,誰申請(qǐng)的,誰銷毀。我們?nèi)绻粚?duì)vector里的指針對(duì)應(yīng)的動(dòng)態(tài)內(nèi)存進(jìn)行銷毀操作,直接clear()的話就會(huì)造成內(nèi)存泄露。所以我們需要首先遍歷vector,把vector中元素存儲(chǔ)的指針對(duì)應(yīng)動(dòng)態(tài)內(nèi)存銷毀掉,然后再clear()掉vector。

demo示例:

#include <vector>
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    vector<char *> obj;
    
    //vector中插入動(dòng)態(tài)內(nèi)存
    for(int i=0;i<10;i++)
    {
        char * ptr = new char[100];
        memset(ptr, 0 , 100);
        
        obj.push_back(ptr);
    }

    //需要清理申請(qǐng)的動(dòng)態(tài)內(nèi)存,然后才能清空vector,否則會(huì)造成內(nèi)存泄露
    for(vector<char *>::iterator it = obj.begin(); it != obj.end(); it++)
    {
        if(*it != NULL)
        {
            delete *it;
            *it = NULL;
        }
    }
    obj.clear();
 
    return 0;
}

番外篇:new char[100]和new char(100)的區(qū)別

寫demo的時(shí)候,順手寫了new char(100)。。。后面發(fā)現(xiàn)不對(duì)了。。。哎。。。所以加了個(gè)番外篇,記錄一下。
new char[100]和new char(100)的區(qū)別,其實(shí)這個(gè)屬于分配問題,大家使用時(shí)還是要注意的,失之毫厘差以千里??!

詳情如下:

char *p = new char[200]; // new一個(gè)char數(shù)組,大小為200
char *p = new char(200); //new一個(gè)char ,其初始值為200

到此這篇關(guān)于C++ vector如何動(dòng)態(tài)申請(qǐng)內(nèi)存的元素的文章就介紹到這了,更多相關(guān)C++ vector動(dòng)態(tài)申請(qǐng)內(nèi)存元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中 值傳遞和指針傳遞實(shí)例詳解

    C語言中 值傳遞和指針傳遞實(shí)例詳解

    這篇文章主要介紹了C語言中 值傳遞和指針傳遞實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)部件透明陰影效果與不規(guī)則窗體的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01
  • C語言函數(shù)棧幀的創(chuàng)建和銷毀詳解

    C語言函數(shù)棧幀的創(chuàng)建和銷毀詳解

    這篇文章主要為大家詳細(xì)介紹了C語言函數(shù)棧幀的創(chuàng)建和銷毀,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 詳解C++虛函數(shù)表存儲(chǔ)位置

    詳解C++虛函數(shù)表存儲(chǔ)位置

    相信大家知道虛表指針和虛函數(shù)存儲(chǔ)的位置,但對(duì)于虛函數(shù)表的存儲(chǔ)位置一時(shí)無法確定。本文就來和大家詳細(xì)聊聊相關(guān)內(nèi)容,希望對(duì)大家有所幫助
    2023-04-04
  • C++11基于范圍的for循環(huán)代碼示例

    C++11基于范圍的for循環(huán)代碼示例

    這篇文章主要給大家介紹了關(guān)于C++11基于范圍的for循環(huán)的相關(guān)資料,范圍for循環(huán)(也稱為C++11的基于范圍的for循環(huán))是一種簡化迭代容器(如數(shù)組、向量、列表等)元素的方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • C++?QT實(shí)現(xiàn)文件壓縮和解壓縮操作

    C++?QT實(shí)現(xiàn)文件壓縮和解壓縮操作

    這篇文章主要為大家詳細(xì)介紹了C++?QT如何實(shí)現(xiàn)壓縮文件、文件夾和解壓縮的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-11-11
  • C++中對(duì)象的常引用總結(jié)

    C++中對(duì)象的常引用總結(jié)

    以下是對(duì)C++中對(duì)象的常引用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • OpenCV鼠標(biāo)繪制矩形和截取矩形區(qū)域圖像

    OpenCV鼠標(biāo)繪制矩形和截取矩形區(qū)域圖像

    這篇文章主要為大家詳細(xì)介紹了OpenCV鼠標(biāo)繪制矩形和截取矩形區(qū)域圖像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言深入探究程序的編譯之預(yù)處理

    C語言深入探究程序的編譯之預(yù)處理

    在C語言的程序中包括各種以符號(hào)#開頭的編譯指令,這些指令稱為預(yù)處理命令。預(yù)處理命令屬于C語言編譯器,而不是C語言的組成部分,通過預(yù)處理命令可擴(kuò)展C語言程序設(shè)計(jì)的環(huán)境
    2022-05-05
  • vscode+leetcode環(huán)境配置方法

    vscode+leetcode環(huán)境配置方法

    這篇文章主要介紹了vscode+leetcode環(huán)境配置,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

沅陵县| 丰顺县| 阳新县| 台北市| 锡林郭勒盟| 磴口县| 增城市| 汤阴县| 外汇| 崇左市| 沽源县| 平原县| 延安市| 巴彦县| 略阳县| 松原市| 南乐县| 莒南县| 明星| 蓬溪县| 钟祥市| 班玛县| 大石桥市| 岳阳市| 仪陇县| 崇州市| 潍坊市| 永兴县| 沂源县| 茶陵县| 南漳县| 肇东市| 香港 | 商城县| 汉沽区| 甘谷县| 兴城市| 陕西省| 北碚区| 峡江县| 金昌市|