欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年07月27日 10:14:07   作者:誰吃薄荷糖  
vector是一種動(dòng)態(tài)數(shù)組,本文主要介紹了C++ vector如何動(dòng)態(tài)申請內(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)存管理原則,誰申請的,誰銷毀。我們?nèi)绻粚ector里的指針對應(yīng)的動(dòng)態(tài)內(nèi)存進(jìn)行銷毀操作,直接clear()的話就會(huì)造成內(nèi)存泄露。所以我們需要首先遍歷vector,把vector中元素存儲(chǔ)的指針對應(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);
    }

    //需要清理申請的動(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)不對了。。。哎。。。所以加了個(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)申請內(nèi)存的元素的文章就介紹到這了,更多相關(guān)C++ vector動(dòng)態(tài)申請內(nèi)存元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    C++或Go求矩陣?yán)锏膷u嶼的數(shù)量詳解

    這篇文章主要介紹了C++和go實(shí)現(xiàn)LeetCode(200.島嶼的數(shù)量),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼

    Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼

    本文主要介紹了Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室,實(shí)現(xiàn)一個(gè)在線聊天室, 使用tcp對客戶端和服務(wù)器端進(jìn)行通訊。具有一定的參考價(jià)值,具有一定的參考價(jià)值,
    2021-06-06
  • 基于C中一個(gè)行壓縮圖的簡單實(shí)現(xiàn)代碼

    基于C中一個(gè)行壓縮圖的簡單實(shí)現(xiàn)代碼

    首先簡單說一下什么是行壓縮圖,其實(shí)嚴(yán)格意義上應(yīng)該是行壓縮矩陣
    2013-05-05
  • C++基礎(chǔ)入門教程(八):函數(shù)指針

    C++基礎(chǔ)入門教程(八):函數(shù)指針

    這篇文章主要介紹了C++基礎(chǔ)入門教程(八):函數(shù)指針,本文講解了函數(shù)原型和函數(shù)定義、const限定符與指針、函數(shù)的指針參數(shù)、為什么要使用指針參數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Qt之QTimer使用及技巧小結(jié)

    Qt之QTimer使用及技巧小結(jié)

    QTimer是Qt中的定時(shí)器類,用于執(zhí)行定時(shí)操作,如在一段時(shí)間間隔后觸發(fā)某個(gè)槽函數(shù)或執(zhí)行特定的代碼,下面就來介紹一下Qt之QTimer使用及技巧小結(jié),感興趣的可以了解一下
    2023-10-10
  • C語言中g(shù)etchar和putchar的使用方法詳解

    C語言中g(shù)etchar和putchar的使用方法詳解

    我們知道scanf函數(shù)可以從鍵盤輸入信息,而printf則可以輸出信息,同樣地,getchar和putchar也有同樣的功能,下面我來給大家介紹putchar和getchar的使用方法,需要的朋友可以參考下
    2023-08-08
  • 一文搞懂C++中的四種強(qiáng)制類型轉(zhuǎn)換

    一文搞懂C++中的四種強(qiáng)制類型轉(zhuǎn)換

    很多朋友向小編了解C語言中怎么進(jìn)行強(qiáng)制類型轉(zhuǎn)換呢?在這小編告訴大家強(qiáng)制類型轉(zhuǎn)換可以分為兩種,一種是隱式類型轉(zhuǎn)換一種是顯示類型轉(zhuǎn)換,下面通過示例代碼給大家介紹下,需要的朋友參考下吧
    2021-07-07
  • 詳解C++中的析構(gòu)函數(shù)

    詳解C++中的析構(gòu)函數(shù)

    這篇文章主要介紹了C++中的析構(gòu)函數(shù)的相關(guān)知識(shí),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C語言轉(zhuǎn)義字符詳解

    C語言轉(zhuǎn)義字符詳解

    這篇文章主要介紹了C語言轉(zhuǎn)義字符詳解,本篇文章通過簡要的案例,講解了C語言轉(zhuǎn)義字符該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言 表、棧和隊(duì)列詳解及實(shí)例代碼

    C語言 表、棧和隊(duì)列詳解及實(shí)例代碼

    這篇文章主要介紹了C語言 表、棧和隊(duì)列詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論