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

C++ 中 vector 的常用操作方法匯總

 更新時(shí)間:2024年10月18日 09:54:22   作者:XuanRanDev  
在C++的STL中,vector是一個(gè)動(dòng)態(tài)數(shù)組,可以在運(yùn)行時(shí)調(diào)整大小,本文介紹了vector的初始化、元素訪問、修改、迭代器操作、容量管理以及性能優(yōu)化技巧,通過這些操作,可以有效地使用vector管理數(shù)據(jù),本文介紹C++  vector 操作,感興趣的朋友一起看看吧

在 C++ 中,vector 是 STL(標(biāo)準(zhǔn)模板庫)提供的一個(gè)動(dòng)態(tài)數(shù)組容器,允許我們?cè)谶\(yùn)行時(shí)動(dòng)態(tài)調(diào)整大小。vector 提供了許多方便的操作,使得它成為管理數(shù)據(jù)的理想選擇。在這篇博客中,我們將探討 vector 的一些常用操作方法,并提供一些拓展知識(shí),幫助你更好地理解和使用這一強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。

1. 初始化和賦值

1.1 默認(rèn)構(gòu)造函數(shù)

vector<int> v1;

創(chuàng)建一個(gè)空的 vector。

1.2 指定大小和初值

vector<int> v2(5, 10);

創(chuàng)建一個(gè)包含 5 個(gè)元素的 vector,每個(gè)元素的初始值為 10。

1.3 使用列表初始化

vector<int> v3 = {1, 2, 3, 4, 5};

使用初始值列表來構(gòu)造 vector

1.4 拷貝構(gòu)造函數(shù)

vector<int> v4(v3);

使用現(xiàn)有的 vector 進(jìn)行拷貝構(gòu)造。

2. 訪問元素

2.1 使用 [] 操作符

int val = v3[2];

直接通過索引訪問元素,但不檢查邊界。

2.2 使用 at() 函數(shù)

int val = v3.at(2);

[] 類似,但 at() 會(huì)檢查索引是否合法,超出范圍會(huì)拋出異常。

2.3 獲取第一個(gè)和最后一個(gè)元素

int first = v3.front();
int last = v3.back();

2.4 獲取指向數(shù)據(jù)的指針

int* data_ptr = v3.data();

獲取 vector 中元素存儲(chǔ)數(shù)組的指針。

3. 修改元素

3.1 添加元素

3.1.1 使用 push_back()

v3.push_back(6);

vector 的末尾添加一個(gè)元素。

3.1.2 使用 emplace_back()

v3.emplace_back(7);

在末尾原地構(gòu)造一個(gè)元素,避免不必要的拷貝。

3.2 刪除元素

3.2.1 使用 pop_back()

v3.pop_back();

移除 vector 末尾的元素。

3.2.2 使用 erase()

v3.erase(v3.begin() + 2);

移除指定位置的元素。

3.2.3 使用 clear()

v3.clear();

清空 vector 中的所有元素。

4. 迭代器操作

4.1 使用迭代器遍歷

for (vector<int>::iterator it = v3.begin(); it != v3.end(); ++it) {
    cout << *it << " ";
}

4.2 使用范圍 for循環(huán)

for (int val : v3) {
    cout << val << " ";
}

4.3 使用反向迭代器

for (vector<int>::reverse_iterator rit = v3.rbegin(); rit != v3.rend(); ++rit) {
    cout << *rit << " ";
}

5. 容量管理

5.1 使用 size() 和 capacity()

size_t size = v3.size();
size_t capacity = v3.capacity();

size() 返回 vector 中的元素個(gè)數(shù),capacity() 返回當(dāng)前分配的存儲(chǔ)空間大?。梢匀菁{的元素個(gè)數(shù))。

5.2 使用 reserve()

v3.reserve(10);

預(yù)先分配至少能容納 10 個(gè)元素的空間。

5.3 使用 resize()

v3.resize(8, 0);

vector 的大小調(diào)整為 8,如果新大小大于當(dāng)前大小,多出的元素將使用 0 進(jìn)行初始化。

6. 性能優(yōu)化技巧

6.1 避免不必要的拷貝

在插入元素時(shí),盡量使用 emplace_back() 而不是 push_back(),可以減少一次對(duì)象的拷貝構(gòu)造。

6.2 使用 shrink_to_fit()

v3.shrink_to_fit();

將多余的容量釋放,減少內(nèi)存占用。

6.3 避免過度擴(kuò)展

在已知 vector 大小大致范圍時(shí),提前使用 reserve() 分配足夠的空間,避免擴(kuò)展時(shí)頻繁的內(nèi)存分配。

7. 拓展知識(shí)

7.1 vector 的內(nèi)存管理

vector 使用的是動(dòng)態(tài)數(shù)組來管理元素。當(dāng)需要擴(kuò)展時(shí),它會(huì)分配一個(gè)更大的內(nèi)存塊,將原有元素拷貝過去。為了避免頻繁的內(nèi)存分配,vector 通常會(huì)預(yù)留比實(shí)際需要更多的空間,這就是 capacity()size() 之間的差異。

7.2 異常安全性

vector 的許多操作,如 push_back()、resize() 等,可能會(huì)分配新的內(nèi)存并移動(dòng)對(duì)象。因此,在操作 vector 時(shí)要考慮異常安全性。大多數(shù)情況下,vector 提供的是“強(qiáng)異常安全保證”,即如果發(fā)生異常,容器的狀態(tài)不會(huì)被破壞。

7.3 與原始數(shù)組的比較

vector 提供了動(dòng)態(tài)調(diào)整大小、自動(dòng)管理內(nèi)存和許多便利的操作,而原始數(shù)組則更為簡(jiǎn)單且性能稍高。在需要高效內(nèi)存使用的地方,可以考慮使用 std::array 或原始數(shù)組,但在大多數(shù)情況下,vector 是更安全和靈活的選擇。

到此這篇關(guān)于C++ 中 vector 的常用操作方法的文章就介紹到這了,更多相關(guān)C++ vector 操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++缺省參數(shù)的具體使用

    C++缺省參數(shù)的具體使用

    缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。本文就詳細(xì)的介紹了一下C++缺省參數(shù)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-01-01
  • OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板

    OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 全面解析C++中的new,operator new與placement new

    全面解析C++中的new,operator new與placement new

    以下是C++中的new,operator new與placement new進(jìn)行了詳細(xì)的說明介紹,需要的朋友可以過來參考下
    2013-09-09
  • 用C語言判斷一個(gè)二叉樹是否為另一個(gè)的子結(jié)構(gòu)

    用C語言判斷一個(gè)二叉樹是否為另一個(gè)的子結(jié)構(gòu)

    這篇文章主要介紹了用C語言判斷一個(gè)二叉樹是否為另一個(gè)的子結(jié)構(gòu),是數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • C++ 關(guān)于MFC List Control 控件的總結(jié)

    C++ 關(guān)于MFC List Control 控件的總結(jié)

    這篇文章主要介紹了C++ 關(guān)于MFC List Control 控件的總結(jié)的相關(guān)資料,十分的詳細(xì),有需要的朋友可以參考下
    2015-06-06
  • C++?STL容器與函數(shù)謂詞示例分析講解

    C++?STL容器與函數(shù)謂詞示例分析講解

    這篇文章主要介紹了C++?STL容器與函數(shù)謂詞示例,STL是“Standard?Template?Library”的縮寫,中文譯為“標(biāo)準(zhǔn)模板庫”。STL是C++標(biāo)準(zhǔn)庫的一部分,不用單獨(dú)安裝
    2022-11-11
  • C/C++左旋字符串實(shí)現(xiàn)代碼舉例

    C/C++左旋字符串實(shí)現(xiàn)代碼舉例

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串,下面這篇文章主要給大家介紹了關(guān)于C/C++左旋字符串實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • C語言函數(shù)語法詳解

    C語言函數(shù)語法詳解

    本文是小結(jié)了一下C語言的函數(shù)語法,詳細(xì)介紹了C語言函數(shù)語法的概述、函數(shù)的定義、函數(shù)的返回值、函數(shù)調(diào)用等7個(gè)方面的內(nèi)容,非常詳細(xì),這里推薦給小伙伴們。
    2015-02-02
  • 在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    最近的項(xiàng)目在用c處理后臺(tái)的數(shù)據(jù)時(shí),因?yàn)楹枚嗤獠拷涌诙荚谑褂肑son格式作為返回的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問題,需要的朋友可以參考下
    2023-11-11
  • 深入理解C++中的vector類的用法及特性

    深入理解C++中的vector類的用法及特性

    vector直接翻譯過來為向量,在C++中為封裝動(dòng)態(tài)數(shù)組的容器,且有序,需要的朋友可以參考下
    2016-05-05

最新評(píng)論

夹江县| 昌图县| 福海县| 赤城县| 博湖县| 古浪县| 昭平县| 呼图壁县| 星子县| 交口县| 攀枝花市| 府谷县| 壶关县| 宝鸡市| 长乐市| 白水县| 咸阳市| 琼海市| 铜陵市| 宣城市| 连南| 澳门| 油尖旺区| 海淀区| 长春市| 上思县| 双鸭山市| 梅河口市| 镇宁| 肥西县| 锦州市| 张家港市| 清苑县| 东至县| 阿克苏市| 平顶山市| 乌鲁木齐市| 禄劝| 专栏| 沁源县| 德州市|