欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在C++中使用vector順序容器-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)怎么在C++中使用vector順序容器,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于魚臺企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城建設(shè)。魚臺網(wǎng)站建設(shè)公司,為魚臺等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

一、特點(diǎn)

①總的來說:可變大小數(shù)組。支持快速隨機(jī)訪問。在尾部之外的位置插入或刪除元素可能很慢
②元素保存在連續(xù)的內(nèi)存空間中,因此通過下標(biāo)取值非常快
③在容器中間位置添加或刪除元素非常耗時
④一旦內(nèi)從重分配,和原vector相關(guān)的指針,引用,迭代器都失效。內(nèi)存重分配耗時很長

二、頭文件、using聲明

  • 頭文件:#include <vector>

  • using聲明:using std::vector;

三、初始化

  • vector<T>  v1; ==>v1是一個空的vector

  • vector<T> v2(v1); ===>v2是v1的副本,拷貝構(gòu)造

  • vector<T> v2=v1; ===>同上

  • vector<T> v1(n,val); ===>初始化n個value

  • vector<T> v1(iter1,iter2); ===>用迭代器iter1與iter2所指的區(qū)間內(nèi)元素進(jìn)行初始化

  • vector<T> v1(n); ===>初始化n個元素,每個元素使用默認(rèn)值(int為0,string為空...)

  • vector<T> v1{a,b,c...}; ===>用元素a,b,c進(jìn)行初始化

  • vector<T> v1={a,b,c...}; ===>同上

四、相關(guān)操作

1.運(yùn)算符

v1==v2;//判斷v1和v2是否相等
v1!=v2;//判斷v1和v2是否相等
>、>=、<、<= //以字典順序進(jìn)行比較

2.取值

索引取值:v[0],v[1],v[2]....

五、相關(guān)函數(shù)

vector不支持push_front()和emplace_front()

v.empty();//判斷是否為空,返回布爾值
v.size();//返回容器中的元素個數(shù)
v.max_size();//返回容器的容量
v.front();//得到頭元素
v.back();//得到尾元素
v.at(int i);//得到下標(biāo)i處的元素,若下標(biāo)越界,會拋出異常
v1.swap(v2);//將v1和v2進(jìn)行交換。容器的成員函數(shù)版本
swap(v1,v2);//同上。系統(tǒng)函數(shù)版本
 
assign(iter1,iter2);//將容器元素更換為一個迭代器的區(qū)間元素
assign(n,t);//將容器元素變?yōu)閚個t元素
v.insert(iter,t);//在迭代器iter處插入t。返回所插位置處的迭代器
v.insert(v.end(),10,t);//在容器v的末尾插入10個元素,每個元素都是t。返回新添加元素的第一個元素的迭代器
v.insert(v.end(),{"a","b"...});//將后面花括號的每個元素插入容器v的尾部。返回新添加元素的第一個元素的迭代器
v.insert(v.begin(),v2.end()-2,v2.end());//將容器v2的最后兩個元素插入容器v的頭部。返回新添加元素的第一個元素的迭代器
注意:上面這個用法,后面兩個參數(shù)不能為自身容器的范圍(v.insert(v.begin(),v.end()-2,v.end());是錯誤的)
 
 
//利用insert的返回值,下面代碼為一直在lst容器的頭部插入元素(類似于push_front的功能)
vector<string> v;
auto iter=lst.begin();
while(cin>> word)
 iter=v.insert(iter,word);//insert函數(shù)每回執(zhí)行完,返回容器的首元素位置
//vector不支持pop_front
 
v.push_back(t);//尾部追加元素t
v.pop_back();//刪除尾元素
 
v.earse(iter);//刪除迭代器iter所指位置處的元素。返回刪除位置處后一個元素迭代器
v.erase(iter1,iter2);//刪除迭代器iter1與iter2區(qū)間內(nèi)的元素。返回刪除最后一個元素的后一個元素迭代器
 
v.clear();//清空容器,重新初始化容器
v.resize(n);//將容器v的元素變?yōu)閚個。若n<原始元素個數(shù),刪除多于元素。若n>原始元素個數(shù),則用默認(rèn)初始值初始化容器
v.resize(n,t);//將容器元素變?yōu)閚個t。與容器原始個數(shù)無關(guān)
 
vector<int> v(5,666);
v.resize(3);//v內(nèi)有3個元素,都是666
v.resize(8);;//v內(nèi)有8個元素,前5個個是666,后3個都是0(默認(rèn))
v.resize(10,666);//v內(nèi)有10個元素,都是666
//vector不支持emplace_front();
//下面的兩個函數(shù),是在內(nèi)存中創(chuàng)建一個對象,然后添加進(jìn)相應(yīng)的位置
v.empalce(iter,args);//在容器v的位置添加創(chuàng)建一個args對象
v.emplace_back(args);//在容器v的尾部添加創(chuàng)建一個args對象
 
例如
class A{
 string name;int age;
public:
 A(string name, int age);
};
int main()
{
 vector<A> v;
 v.emplace_back("C語言", 18);//在尾部創(chuàng)建一個元素
 v.emplace(v.begin(),"C++",18);//在容器v的頭部添加一個元素
}
v.capacity();//返回當(dāng)前容器的容量(總共能存多少個)
v.reserve(n);//為容器v重新分配n個內(nèi)存空間(如果n<=當(dāng)前容器大小,則什么都不做)

六、容器操作使迭代器、引用、指針失效

1.概念:向容器中添加或者刪除元素可能會使容器的迭代器、引用、指針失效。失效的迭代器、引用、指針不再表示任何元素,使用起來非常危險

2.添加元素

  • 如果vector沒有內(nèi)存重分配。插入位置之前的元素的迭代器、引用、指針有效,插入位置之后的迭代器、引用、指針都失效

  • 如果內(nèi)存重分配,則所有的迭代器、引用、指針都失效

3.刪除元素

刪除元素之前的迭代器、引用、指針有效,之后的失效

七、vector是如何增長的

1.概念

vector是可變長的數(shù)組,當(dāng)向其中增加元素時,如果空間已滿,回自動申請一個新的空間,并將原來的空間釋放,使指向原來空間的指針指向于新空間

2.方法:vector增長是有規(guī)律的,可以通過一個公式描述

  • maxSize=maxSize+((maxSize>>1)>1?(maxSize>>1):1)

  • 圖解:就是由1、2、3、4、6、9...依次增長

怎么在C++中使用vector順序容器

看完上述內(nèi)容,你們對怎么在C++中使用vector順序容器有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:怎么在C++中使用vector順序容器-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://www.chinadenli.net/article44/dhejhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作品牌網(wǎng)站制作動態(tài)網(wǎng)站做網(wǎng)站建站公司企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計