日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【C++ 语言】vector 容器 ( 容器分类 | vector 声明 | vector 初始化 | vector 容器元素增删查改 )

發(fā)布時(shí)間:2025/6/17 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++ 语言】vector 容器 ( 容器分类 | vector 声明 | vector 初始化 | vector 容器元素增删查改 ) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

        • 序列式容器
        • vector 簡(jiǎn)介
        • vector ( 向量 ) 頭文件
        • vector ( 向量 ) 聲明及初始化
        • vector ( 向量 ) 添加元素
        • vector ( 向量 ) 查詢?cè)?/li>
        • vector ( 向量 ) 刪除元素
        • vector ( 向量 ) 容量改變
        • vector ( 向量 ) 涉及到的運(yùn)算符重載
        • vector ( 向量 ) 相關(guān)源碼



序列式容器



1. 常用的數(shù)據(jù)結(jié)構(gòu) ( 容器 ) 及分類 : 數(shù)組 , 鏈表 , 樹 , 棧 , 隊(duì)列 ; 容器可以分為序列式 , 與關(guān)聯(lián)式 兩種 ;

2. 序列式容器 : 序列式容器的元素排列的順序與元素本身無關(guān) , 其先后順序由元素添加到容器中的順序決定 ;

3. 常用的序列式容器 : C++ 的 STL ( 標(biāo)準(zhǔn)模板庫(kù) ) , 包括 vector ( 向量 ) , list ( 列表 ) , queue ( 隊(duì)列 ) , dequeue ( 雙向隊(duì)列 ) , stack ( 棧 ) , priority_queue ( 優(yōu)先隊(duì)列 ) ;



vector 簡(jiǎn)介



vector 向量是一種支持快速隨機(jī)訪問的 , 連續(xù)存儲(chǔ)元素的容器 ;

vector , dequeue , list 調(diào)用方式基本一致 , 這里只研究 vector 一種 ;



vector ( 向量 ) 頭文件



vector 頭文件 : 使用 vector 首先要導(dǎo)入頭文件 , 之后才能使用 vector 容器 ;

//vector 是 C++ 中定義的模板類 #include <vector>

vector ( 向量 ) 聲明及初始化



1. 聲明 vector ( 基本用法 ) : 格式 " vector <元素類型名稱> 容器名稱 ; " ; 聲明 vector 容器 , 尖括號(hào)中的元素類型名稱 , 是容器中存儲(chǔ)的元素的類型 ;

//聲明向量vector<int> vector_1;

2. 聲明 vector ( 指定容量 ) : 調(diào)用構(gòu)造方法 , 并傳入 int 類型參數(shù) , 該參數(shù)就是 vector 容器的元素個(gè)數(shù) ;

//調(diào)用向量的構(gòu)造方法 , 并傳入一個(gè) int 類型參數(shù)//表示創(chuàng)建一個(gè)有 8 個(gè) int 類型元素空間的向量vector<int> vector_2(8);

3. 聲明 vector ( ① 指定容量 ② 初始化內(nèi)容 ) : 調(diào)用構(gòu)造方法 , 傳入 2 個(gè)參數(shù) ;

  • ① 容量 : 第一個(gè)參數(shù)是 vector 容量 ;
  • ② 元素 : 第二個(gè)參數(shù)是 vector 中初始化的元素內(nèi)容 ;
//表示創(chuàng)建有 8 個(gè)元素的向量 , 8 個(gè)元素的值都是 2vector<int> vector_3(8 , 2);

4. 聲明 vector ( 使用另外 vector 初始化 ) : 調(diào)用構(gòu)造方法 , 傳入vector 對(duì)象 ;

//初始化向量時(shí) , 傳入另一個(gè)向量vector<int> vector_4(vector_3);

vector ( 向量 ) 添加元素



添加元素 : 調(diào)用 push_back 方法 , 容器出入策略 , 后進(jìn)先出 ;

// ( 1 ) 增加元素 : 調(diào)用 push_back 方法 , 容器出入策略 , 后進(jìn)先出vector_1.push_back(8);vector_1.push_back(88);

vector ( 向量 ) 查詢?cè)?/h4>

下面獲取的元素都是基于上面小節(jié)添加的元素 ;

1. 通過下標(biāo)獲取元素 : 使用格式 " vector 變量名稱 [ 下標(biāo)索引 ] " , 這里的 [] 在 vector 中進(jìn)行了運(yùn)算符重載 ;

// <1> 通過下標(biāo)獲取元素// 這里的 [] 在 vector 中進(jìn)行了運(yùn)算符重載cout << "通過下標(biāo)獲取 vector_1 第 0 個(gè)元素 : vector_1[0] : " << vector_1[0] << endl;

2. 通過 at() 方法獲取對(duì)應(yīng)索引的元素 ;

// <2> 通過 at() 方法獲取對(duì)應(yīng)索引的元素cout << "通過 at 方法獲取 vector_1 第 0 個(gè)元素 : vector_1.at(0) : " << vector_1.at(0) << endl;

3. 獲取第一個(gè)元素 ;

// <3> 獲取第一個(gè)元素cout << "通過 front 方法獲取 vector_1 第 1 個(gè)元素 : vector_1.front() : " << vector_1.front() << endl;

4. 獲取最后一個(gè)元素 ;

// <4> 獲取最后一個(gè)元素cout << "通過 back 方法獲取 vector_1 最后 1 個(gè)元素 : vector_1.back() : " << vector_1.back() << endl;

5. 執(zhí)行結(jié)果 :

通過下標(biāo)獲取 vector_1 第 0 個(gè)元素 : vector_1[0] : 8 通過 at 方法獲取 vector_1 第 0 個(gè)元素 : vector_1.at(0) : 8 通過 front 方法獲取 vector_1 第 1 個(gè)元素 : vector_1.front() : 8 通過 back 方法獲取 vector_1 最后 1 個(gè)元素 : vector_1.back() : 88

vector ( 向量 ) 刪除元素



1. 刪除最后加入的元素 : 調(diào)用 pop_back 方法 , 容器出入策略 , 后進(jìn)先出 ; 注意這里并沒有修改 vector 容量大小 , 只是將最后的元素清空了 ;

// <1> 調(diào)用 pop_back 方法 , 容器出入策略 , 后進(jìn)先出vector_1.pop_back();

之前向 vector 中先后放入了 8 和 88 兩個(gè)數(shù) , 然后將后面的 88 元素設(shè)置成了 0 , 目前只剩下一個(gè)元素 8 , 但容器的元素個(gè)數(shù)是 2 個(gè) ;

2. 刪除所有元素 , 這里只是清空元素內(nèi)容為 0

// <2> 刪除所有元素 , 這里只是清空元素內(nèi)容為 0vector_1.clear();

3. 刪除指定位置區(qū)間的元素 , 這里只是清空元素內(nèi)容為 0 , 傳入 2 個(gè)參數(shù) ;

  • ① 第 1 個(gè)是刪除的起始位置 ;
  • ② 第 2 個(gè)參數(shù)是刪除的結(jié)束位置 ;
// <3> 刪除指定位置區(qū)間的元素 , 這里只是清空元素內(nèi)容為 0// 第 1 個(gè)是刪除的起始位置 , // 第 2 個(gè)參數(shù)是刪除的結(jié)束位置 ;//刪除從開始到結(jié)束的所有元素vector_1.erase(vector_1.begin() , vector_1.end());

4. 關(guān)于刪除元素的內(nèi)存說明 : 刪除若干元素后 , vector 的容量 , 即內(nèi)存所占的空間是不會(huì)減小的 ;

5. 打印刪除元素后的 vector 容器大小 : 調(diào)用 vector 的 capacity() 方法即可獲取其容量大小 ;

  • ① 代碼示例 :
//打印 vector 容器容量大小 , 調(diào)用 vector 的 capacity() 方法即可獲取其容量大小// 這個(gè)容量大小是元素個(gè)數(shù) , 不是內(nèi)存字節(jié)數(shù)cout << "打印 vector_1 容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;
  • ② 執(zhí)行結(jié)果 :
打印 vector_1 容量大小 : vector_1.capacity() : 2

這個(gè)容量大小是元素個(gè)數(shù) , 不是內(nèi)存字節(jié)數(shù) ;



vector ( 向量 ) 容量改變



1. 容量修改 : 刪除元素 , 并不能修改容器的容量 , 如果要修改容量 , 需要使用其他容器與該容器進(jìn)行交換 ;

2. 容器交換 : 調(diào)用 vector 的 swap() 方法 , 進(jìn)行容器交換 , 傳入 vector 容器對(duì)象當(dāng)做參數(shù) ;

  • ① 代碼示例 :
//創(chuàng)建一個(gè)新的 vector , 此時(shí)其容量為 0vector<int> vector_swap;//將創(chuàng)建的新的 vector_swap 與 vector_1 容器進(jìn)行交換vector_swap.swap(vector_1);cout << "打印 vector_1 交換后的容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;
  • ② 執(zhí)行結(jié)果 :
打印 vector_1 交換后的容量大小 : vector_1.capacity() : 0

vector ( 向量 ) 涉及到的運(yùn)算符重載



vector 運(yùn)算符重載 : 使用 " [] " 可以訪問 vector 中指定索引的變量 , vector 對(duì) " [] " 符號(hào)進(jìn)行了重載 , Ctrl + 左鍵 點(diǎn)擊中括號(hào)符號(hào) , 就可以跳轉(zhuǎn)到 vector 定義的位置 , 下面的內(nèi)容是 vector 對(duì) " [] " 進(jìn)行運(yùn)算符重載的內(nèi)容 ;

_NODISCARD _Ty& operator[](const size_type _Pos) {auto& _My_data = _Mypair._Myval2; #if _CONTAINER_DEBUG_LEVEL > 0_STL_VERIFY(_Pos < static_cast<size_type>(_My_data._Mylast - _My_data._Myfirst), "vector subscript out of range"); #endif // _CONTAINER_DEBUG_LEVEL > 0return _My_data._Myfirst[_Pos];}

vector ( 向量 ) 相關(guān)源碼



1. 代碼示例 :

// 004_Container.cpp: 定義應(yīng)用程序的入口點(diǎn)。 //#include "004_Container.h"//vector 是 C++ 中定義的模板類 #include <vector>using namespace std;int main() {cout << "Hello Container。" << endl;// I . vector 向量 ( vector , dequeue , list 調(diào)用方式基本一致 )//vector 向量是一種支持快速隨機(jī)訪問的 , 連續(xù)存儲(chǔ)元素的容器//聲明向量vector<int> vector_1;//調(diào)用向量的構(gòu)造方法 , 并傳入一個(gè) int 類型參數(shù)//表示創(chuàng)建一個(gè)有 8 個(gè) int 類型元素空間的向量vector<int> vector_2(8);//表示創(chuàng)建有 8 個(gè)元素的向量 , 8 個(gè)元素的值都是 2vector<int> vector_3(8 , 2);//初始化向量時(shí) , 傳入另一個(gè)向量vector<int> vector_4(vector_3);// 2. 使用向量 : 增刪查改// ( 1 ) 增加元素 : 調(diào)用 push_back 方法 , 容器出入策略 , 后進(jìn)先出vector_1.push_back(8);vector_1.push_back(88);// ( 2 ) 查詢?cè)?: // <1> 通過下標(biāo)獲取元素// 這里的 [] 在 vector 中進(jìn)行了運(yùn)算符重載cout << "通過下標(biāo)獲取 vector_1 第 0 個(gè)元素 : vector_1[0] : " << vector_1[0] << endl;// <2> 通過 at() 方法獲取對(duì)應(yīng)索引的元素cout << "通過 at 方法獲取 vector_1 第 0 個(gè)元素 : vector_1.at(0) : " << vector_1.at(0) << endl;// <3> 獲取第一個(gè)元素cout << "通過 front 方法獲取 vector_1 第 1 個(gè)元素 : vector_1.front() : " << vector_1.front() << endl;// <4> 獲取最后一個(gè)元素cout << "通過 back 方法獲取 vector_1 最后 1 個(gè)元素 : vector_1.back() : " << vector_1.back() << endl;// ( 4 ) 刪除元素 : // <1> 調(diào)用 pop_back 方法 , 容器出入策略 , 后進(jìn)先出vector_1.pop_back();//之前向 vector 中先后放入了 8 和 88 兩個(gè)數(shù) , // 然后刪除了后一個(gè)元素 88 , 目前只剩下一個(gè)元素 8// <2> 刪除所有元素 , 這里只是清空元素內(nèi)容為 0vector_1.clear();// <3> 刪除指定位置區(qū)間的元素 , 這里只是清空元素內(nèi)容為 0// 第 1 個(gè)是刪除的起始位置 , // 第 2 個(gè)參數(shù)是刪除的結(jié)束位置 ;//刪除從開始到結(jié)束的所有元素vector_1.erase(vector_1.begin() , vector_1.end());//關(guān)于刪除元素內(nèi)存說明 : // 刪除若干元素后 , vector 的容量 , 即內(nèi)存所占的空間是不會(huì)減小的 ; // 調(diào)用刪除方法后 , 就不能在查詢上述元素了//打印 vector 容器容量大小 , 調(diào)用 vector 的 capacity() 方法即可獲取其容量大小// 這個(gè)容量大小是元素個(gè)數(shù) , 不是內(nèi)存字節(jié)數(shù)cout << "打印 vector_1 容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;// ( 5 ) 改變?nèi)萘?, 容器交換 , 這里使用一個(gè)容量為 0 的容器與之交換即可//創(chuàng)建一個(gè)新的 vector , 此時(shí)其容量為 0vector<int> vector_swap;//將創(chuàng)建的新的 vector_swap 與 vector_1 容器進(jìn)行交換vector_swap.swap(vector_1);cout << "打印 vector_1 交換后的容量大小 : vector_1.capacity() : " << vector_1.capacity() << endl;return 0; }

2.執(zhí)行結(jié)果 :

Hello Container。 通過下標(biāo)獲取 vector_1 第 0 個(gè)元素 : vector_1[0] : 8 通過 at 方法獲取 vector_1 第 0 個(gè)元素 : vector_1.at(0) : 8 通過 front 方法獲取 vector_1 第 1 個(gè)元素 : vector_1.front() : 8 通過 back 方法獲取 vector_1 最后 1 個(gè)元素 : vector_1.back() : 88 打印 vector_1 容量大小 : vector_1.capacity() : 2 打印 vector_1 交換后的容量大小 : vector_1.capacity() : 0

總結(jié)

以上是生活随笔為你收集整理的【C++ 语言】vector 容器 ( 容器分类 | vector 声明 | vector 初始化 | vector 容器元素增删查改 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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