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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c++ vector 赋值_C++中vector用法

發(fā)布時間:2025/3/15 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ vector 赋值_C++中vector用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

vector是什么

??????? vector是C++標準模板庫(STL-Standard Template Library)中的概念內(nèi)容,它是一個能夠操作多種數(shù)據(jù)結(jié)構(gòu)和算法的模板類和函數(shù)庫,是一個封裝了動態(tài)大小數(shù)組的順序容器(Sequence Container)。vector被認為是一個容器,也是因為它能夠像容器一樣存放各種類型的對象,可以簡單的認為,vector是一個能夠存放任意類型的動態(tài)數(shù)組。

擴展知識:

STL的代碼從廣義上講分為三類:algorithm(算法)、container(容器)和iterator(迭代器),幾乎所有的代碼都采用了模板類和模板函數(shù)的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了更好的代碼重用機會。

模板是C++程序設計語言中的一個重要特征,而標準模板庫正是基于此特征。標準模板庫使得C++編程語言在有了同Java一樣強大的類庫的同時,保有了更大的可擴展性。

  • 容器:包含、放置數(shù)據(jù)的地方。

  • 迭代器:在容器中指出一個位置、或成對使用以劃定一個區(qū)域,用來限定操作所涉及到的數(shù)據(jù)范圍。

  • 算法:要執(zhí)行的操作。

容器特性

關于STL容器,最令人稱贊的特性之一就是只要不超過它們的最大容許元素數(shù)量值(容量),它們就可以自動增長到足以容納放進去的數(shù)據(jù)(要想知道這個最大值,調(diào)用max_size的容器的內(nèi)置成員函數(shù)即可,使用reserve()函數(shù)可以提前設定容量大小)。

1.順序序列

順序容器中的元素按照嚴格的線性順序排序??梢酝ㄟ^元素在序列中的位置訪問對應的元素。

2.動態(tài)數(shù)組

支持對序列中的任意元素進行快速直接訪問,甚至可以通過指針算述進行該操作。操供了在序列末尾相對快速地添加/刪除元素的操作。

3.能夠感知內(nèi)存分配器的(Allocator-aware)

容器使用一個內(nèi)存分配器對象來動態(tài)地處理它的存儲需求。

vector內(nèi)置基本函數(shù)

(往右滑動可看全表格信息)

函數(shù)原型說明
構(gòu)造函數(shù)
vector()創(chuàng)建一個空vector
vector(int nSize)創(chuàng)建一個vector,元素個數(shù)為nSize
vector(int nSize,const t& t)創(chuàng)建一個vector,元素個數(shù)為nSize,且值均為t
vector(const vector&)復制構(gòu)造函數(shù)
vector(begin,end)復制[begin,end)區(qū)間內(nèi)另一個數(shù)組的元素到vector中
增加函數(shù)
void push_back(const T& x)向量尾部增加一個元素X
iterator insert(iterator it,const T& x)向量中迭代器指向元素前增加一個元素x
iterator insert(iterator it,int n,const T& x)向量中迭代器指向元素前增加n個相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last)向量中迭代器指向元素前插入另一個相同類型向量的[first,last)間的數(shù)據(jù)
刪除函數(shù)
iterator erase(iterator it)刪除向量中迭代器指向元素
iterator erase(iterator first,iterator last)刪除向量中[first,last)中元素
void pop_back()刪除向量中最后一個元素
void clear()清空向量中所有元素
遍歷函數(shù)
reference at(int pos)返回pos位置元素的引用
reference front()返回首元素的引用
reference back()返回尾元素的引用
iterator begin()返回向量頭指針,指向第一個元素
iterator end()返回向量尾指針,指向向量最后一個元素的下一個位置
reverse_iterator rbegin()反向迭代器,指向最后一個元素
reverse_iterator rend()反向迭代器,指向第一個元素之前的位置
判斷函數(shù)
bool empty() const判斷向量是否為空,若為空,則向量中無元素
大小函數(shù)
int size() const返回向量中元素的個數(shù)(實際數(shù)據(jù)的個數(shù))
int max_size() const返回最大可允許的vector元素數(shù)量值
int capacity() const返回當前向量所能容納的最大元素值
其他函數(shù)
void swap(vector&)交換兩個同類型向量的數(shù)據(jù)
void assign(int n,const T& x)設置向量中第n個元素的值為x
void assign(const_iterator first, const_iterator last)向量中[first,last)中元素設置成當前向量元素

代碼eg

vector對象的初始化eg:

假設定義的是int型vector向量,可以有如下方式:

//定義具有10個int型元素的向量(尖括號為元素類型名,它可以是任何合法的數(shù)據(jù)類型),不具有初值,其值不確定 vectora(10); //定義具有10個整型元素的向量,且給出的每個元素初值為1 vectora(10,1); //用向量b給向量a賦值,a的值完全等價于b的值 vectora(b); //將向量b中從0-2(共三個)的元素賦值給a,a的類型為int型 vectora(b.begin(),b.begin+3); //從數(shù)組中獲得初值 int b[7]={1,2,3,4,5,6,7}; vector a(b,b+7);

定義其他類型的vector,如使用自定義的枚舉型eg:

typedef enum { EVENT_A = -1 EVENT_B, EVENT_C, EVENT_UNKNOWN, } event_type_t; //定義一個自定義枚舉型vector Vector event;

vector對象的常用函數(shù)eg:

//包含頭文件 #include //定義int型vector向量a和b vector a,b; //b為向量,將b的0-2個元素賦值給向量a a.assign(b.begin(),b.begin()+3); //a含有4個值為2的元素 a.assign(4,2); //返回a的最后一個元素 a.back(); //返回a的第一個元素 a.front(); //返回a的第i元素,當且僅當a存在 a[i]; //清空a中的元素 a.clear(); //判斷a是否為空,空則返回true,非空則返回false a.empty(); //刪除a向量的最后一個元素 a.pop_back(); //刪除a中第一個(從第0個算起)到第二個元素,也就是說刪除的元素從a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)結(jié)束 a.erase(a.begin()+1,a.begin()+3); //在a的最后一個向量后插入一個元素,其值為5 a.push_back(5); //在a的第一個元素(從第0個算起)位置插入數(shù)值5, a.insert(a.begin()+1,5); //在a的第一個元素(從第0個算起)位置插入3個數(shù),其值都為5 a.insert(a.begin()+1,3,5); //b為數(shù)組,在a的第一個元素(從第0個元素算起)的位置插入b的第三個元素到第5個元素(不包括b+6) a.insert(a.begin()+1,b+3,b+6); //返回a中元素的個數(shù) a.size(); //返回a在內(nèi)存中總共可以容納的元素個數(shù) a.capacity(); //將a的現(xiàn)有元素個數(shù)調(diào)整至10個,多則刪,少則補,其值隨機 a.resize(10); //將a的現(xiàn)有元素個數(shù)調(diào)整至10個,多則刪,少則補,其值為2 a.resize(10,2); //將a的容量擴充至100, a.reserve(100); //b為向量,將a中的元素和b中的元素整體交換 a.swap(b); //b為向量,向量的比較操作還有 != >= > <= < a==b

用push_back給向量尾部增加多個元素,體會一下eg:

//定義一個int型vector vector a; //分別先后把5和10壓入vector,最后向量存儲是這樣:a[0]是5,a[1]就是10 a.push_back(5); a.push_back(10);

用vector作為函數(shù)的參數(shù)或者返回值時,需要注意寫法eg:

//注意“&”,一定記得寫上,不能丟掉 double test(vector<int>&a, vector<int>&b)

用迭代器iterator訪問vector元素eg:

vector a; //定義一個可以迭代int型vector的迭代器iter,并使它指向a的首位(地址) vector::iterator iter = a.begin(); //iter++指的是向后迭代一位,直到iter到超出末端迭代器為止,輸出迭代器iter指向的值 for( ; iter!=a.end(); iter++) cout<

往期文章

>專輯 | C/C++細碎

>linux開發(fā)vi/vim使用知多少

>手機屏幕封裝技術及其分類相關知識

>我應該更早一點認識Git

>大端小端詳解(含代碼及詳細注釋)

>你真的了解開源嗎

>淺談ARM ABI,Android ABI

>CPU、ARM、架構(gòu)(及指令集)關系

>我畢業(yè)了(來自小學妹的畢業(yè)隨筆)

如果覺得文章有用,幫忙點贊或在看,給個心里安慰

總結(jié)

以上是生活随笔為你收集整理的c++ vector 赋值_C++中vector用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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