91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ vector怎么動態申請內存的元素

發布時間:2021-07-27 13:39:24 來源:億速云 閱讀:535 作者:小新 欄目:開發技術

這篇文章主要介紹C++ vector怎么動態申請內存的元素,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

vector 基本用法:

  • front()返回頭部元素的引用,可以當左值

  • back()返回尾部元素的引用,可以當左值

  • push_back()添加元素,只能尾部添加

  • pop_back()移除元素,只能在尾部移除

  • erase(iterator) 是根據位置進行刪除,如果想要刪除某個元素,需要找到當前元素的迭代器位置,再進行刪除

  • insert() 結合迭代器位置插入指定的元素

我們使用vector時候,有時候會插入一些動態內存數據(例如new出來的指針插入到vector中)。這時候我們一定要注意C++的內存管理,因為C++的內存管理原則,誰申請的,誰銷毀。我們如果不對vector里的指針對應的動態內存進行銷毀操作,直接clear()的話就會造成內存泄露。所以我們需要首先遍歷vector,把vector中元素存儲的指針對應動態內存銷毀掉,然后再clear()掉vector。

demo示例:

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

    //需要清理申請的動態內存,然后才能清空vector,否則會造成內存泄露
    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)的區別

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

詳情如下:

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

以上是“C++ vector怎么動態申請內存的元素”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜州市| 梁山县| 常山县| 东乡县| 永丰县| 齐齐哈尔市| 贵定县| 无棣县| 莫力| 鱼台县| 新郑市| 潞城市| 全南县| 防城港市| 汉中市| 西乌珠穆沁旗| 汉源县| 满城县| 北辰区| 锡林郭勒盟| 古田县| 商河县| 龙游县| 新巴尔虎左旗| 濉溪县| 昌邑市| 桓台县| 黑山县| 呼玛县| 永宁县| 礼泉县| 淮滨县| 北辰区| 正安县| 盱眙县| 临城县| 夹江县| 南城县| 紫金县| 禄劝| 泉州市|