国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ vector的常見(jiàn)用法詳解(超詳細(xì))\(^o^)/~

這篇具有很好參考價(jià)值的文章主要介紹了C++ vector的常見(jiàn)用法詳解(超詳細(xì))\(^o^)/~。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

vector,也叫“變長(zhǎng)數(shù)組”,即長(zhǎng)度根據(jù)需要改變的數(shù)組。在算法競(jìng)賽中有十分廣泛的使用~

目錄

1、vector的定義

2、vector常用初始化方法

1、使用花括號(hào)直接賦值:

2、使用圓括號(hào)賦值:

3、vector容器內(nèi)元素的訪問(wèn)

1、通過(guò)下標(biāo)訪問(wèn):

2、通過(guò)迭代器來(lái)訪問(wèn):

4、vector常用函數(shù)實(shí)例解析

1、push_back():

2、pop_back():

3、size():

4、clear():

5、insert():

6、erase():


1、vector的定義

單獨(dú)定義一個(gè)vector:

vector<typename> name;

上面這個(gè)定義其實(shí)相當(dāng)于是一維數(shù)組name[size],只不過(guò)其size可以根據(jù)需要進(jìn)行變化,這就是“變長(zhǎng)數(shù)組”的名字的由來(lái)。

這里的typename可以是任何基本類(lèi)型,例如int、double、char、結(jié)構(gòu)體等,也可以是STL標(biāo)準(zhǔn)容器,例如set、queue、vector等。

接下來(lái)我們來(lái)看下定義二維vector數(shù)組的方法:

vector<typename> Arrayname[size];    

其中,Arrayname[]中的每一個(gè)元素都是一個(gè)vector。我們可以把二維vector數(shù)組當(dāng)做兩個(gè)維都可以變長(zhǎng)的二維數(shù)組來(lái)理解。

例如:

vector<int> vi[100];
//vi[0] ~ vi[100 - 1]中每一個(gè)都是一個(gè)vector容器

2、vector常用初始化方法

1、使用花括號(hào)直接賦值:

vector<int> v{1,2,3,4,5}; //直接使用花括號(hào)賦值
for(auto i : v) cout << i << " "; //輸出1 2 3 4 5

2、使用圓括號(hào)賦值:

vector<int> v(5); //初始化5個(gè)值為0的元素
for(auto i : v) cout << i << " "; //輸出0 0 0 0 0
vector<int> v(5, 4); //初始化5個(gè)值為4的元素
for(auto i : v) cout << i << " "; //輸出4 4 4 4 4

3、vector容器內(nèi)元素的訪問(wèn)

1、通過(guò)下標(biāo)訪問(wèn):

定義為vector<int> v 的vector容器,可以使用 v[0]、v[1]、v[2]...這種方式來(lái)訪問(wèn)。當(dāng)然,下標(biāo)不能越界(v.size()-1之內(nèi))。

注:v[0]、v[1]、v[2]等價(jià)于*(v.begin() )、*(v.begin() + 1)、*(v.begin() + 2)。

2、通過(guò)迭代器來(lái)訪問(wèn):

迭代器(iterator)可以理解為一種類(lèi)似指針的東西,其定義是:

vector<typename>::iterator it;

這樣就得到了迭代器it,并且可以通過(guò) *it?來(lái)訪問(wèn)vector里的元素。

訪問(wèn)方式:

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	v.push_back(1);	//依次輸入1、 2、 3 
	v.push_back(2);
	v.push_back(3);
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
    return 0;
} 

輸出結(jié)果:

1 2 3

4、vector常用函數(shù)實(shí)例解析

1、push_back():

v.push_back(x),就是在vector容器v后面添加一個(gè)元素x,時(shí)間復(fù)雜度為O(1)。

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 3; i++){
		v.push_back(i);
	}
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	return 0;
} 

輸出結(jié)果:

1 2 3

2、pop_back():

pop_back()可以刪除vector的元素,時(shí)間復(fù)雜度為O(1):

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 3; i++){
		v.push_back(i);	//將1、2、3 依次插入v的隊(duì)尾 
	}
	v.pop_back();	//刪除尾元素 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
    return 0;
} 

輸出結(jié)果:

1 2

3、size():

size()用來(lái)獲得vector中元素的個(gè)數(shù),時(shí)間復(fù)雜度為O(1)。size()返回的是unsigned類(lèi)型:

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 3; i++){
		v.push_back(i);	//將1、2、3 依次插入v的隊(duì)尾 
	}
	v.pop_back();	//刪除尾元素 
	//for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
//		cout << *it << " ";
//	}
	cout << v.size();    //獲取容器長(zhǎng)度

    return 0;
} 

輸出結(jié)果:

2

4、clear():

clear()用來(lái)清空vector中的所有元素,時(shí)間復(fù)雜度為O(N),N為vector中的元素個(gè)數(shù):

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 3; i++){
		v.push_back(i);	//將1、2、3 依次插入v的隊(duì)尾 
	}
	v.pop_back();	//刪除尾元素 
	v.clear();	
	//for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
//		cout << *it << " ";
//	}
	cout << v.size();
	
    return 0;
} 

輸出結(jié)果:

0

5、insert():

insert(it, x)用來(lái)向vector的任意迭代器it處插入一個(gè)元素x,時(shí)間復(fù)雜度O(N):

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//將1、2、3、4、5 依次插入v的隊(duì)尾 
	}
	v.insert(v.begin() + 2, -1);	//將-1插入v[2]的位置 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

輸出結(jié)果:

1 2 -1 3 4 5

?

insert(pos,first,last)?pos 位置之前,插入其他容器(不僅限于vector)中位于 [first,last) 區(qū)域的所有元素(簡(jiǎn)單說(shuō)就是把兩個(gè)容器拼接在一起)。

#include<bits/stdc++.h>
using namespace std;

int main(){
	vector<int> v, v1, v2;
    for(int i = 1; i <= 3; i++) v.push_back(i);
	for(int i  = 11; i <= 13; i++) v1.push_back(i);
	for(int i  = 101; i <= 103; i++) v2.push_back(i);
	v.insert(v.end(), v1.begin(), v1.end());  //輸出1 2 3 11 12 13
	v.insert(v.end(), v2.begin(), v2.end()); //輸出1 2 3 11 12 13 101 102 103

    return 0;
}

6、erase():

erase()有兩種用法:刪除單個(gè)元素、刪除一個(gè)區(qū)間內(nèi)所有元素。時(shí)間復(fù)雜度為O(N)。

①刪除單個(gè)元素:

erase(it)即刪除迭代器為it處的元素:

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//將1、2、3、4、5 依次插入v的隊(duì)尾 
	}
	v.erase(v.begin() + 2);	//刪除3 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

輸出結(jié)果:

1 2 4 5

②刪除一個(gè)區(qū)間內(nèi)的所有元素:

erase(first, last)即刪除[first, last)內(nèi)的所有元素:

#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//將1、2、3、4、5 依次插入v的隊(duì)尾 
	}
	v.erase(v.begin() + 1, v.begin() + 3);	//刪除2和3 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

輸出結(jié)果:

1 4 5

如果想要用erase清空vector容器,正確的寫(xiě)法是 v.erase(v.begin(), v.end()),v.end() 表示的是尾元素的下一個(gè)地址。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450863.html

到了這里,關(guān)于C++ vector的常見(jiàn)用法詳解(超詳細(xì))\(^o^)/~的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【STL】:vector用法詳解

    【STL】:vector用法詳解

    朋友們、伙計(jì)們,我們又見(jiàn)面了,本期來(lái)給大家解讀一下有關(guān)vector的基礎(chǔ)用法,如果看完之后對(duì)你有一定的啟發(fā),那么請(qǐng)留下你的三連,祝大家心想事成! C 語(yǔ) 言 專(zhuān) 欄: C語(yǔ)言:從入門(mén)到精通 數(shù)據(jù)結(jié)構(gòu)專(zhuān)欄: 數(shù)據(jù)結(jié)構(gòu) 個(gè)? 人? 主? 頁(yè)?: stackY、 C + + 專(zhuān) 欄? ?: C++ Linux 專(zhuān)

    2024年02月08日
    瀏覽(20)
  • 【C++】STL---vector基本用法介紹

    【C++】STL---vector基本用法介紹

    個(gè)人主頁(yè):平行線也會(huì)相交?? 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會(huì)相交 原創(chuàng) 收錄于專(zhuān)欄【C++之路】?? 本專(zhuān)欄旨在記錄C++的學(xué)習(xí)路線,望對(duì)大家有所幫助??? 希望我們一起努力、成長(zhǎng),共同進(jìn)步。?? vector 是 C++STL 中的一種 動(dòng)態(tài)數(shù)組容器 ,用于存儲(chǔ)和

    2024年02月16日
    瀏覽(18)
  • C++關(guān)于vector的詳細(xì)介紹

    C++關(guān)于vector的詳細(xì)介紹

    vector底層本質(zhì)就是一個(gè)順序表,它是一個(gè)可變長(zhǎng)的數(shù)組,采用連續(xù)存儲(chǔ)的空間來(lái)存儲(chǔ)數(shù)據(jù),它的元素類(lèi)型也可以是任意的內(nèi)置類(lèi)型或者自定義類(lèi)型。 第一種方式: 定義一個(gè)任意類(lèi)型的空vector 第二種方式: 定義一個(gè)任意類(lèi)型的vector,并用n個(gè)val來(lái)初始化vector 第三種方式: 定義

    2024年02月06日
    瀏覽(18)
  • 【C++】 vector <string> 的超詳細(xì)解析!??!
  • 【C++】SLT——Vector詳解

    【C++】SLT——Vector詳解

    本片要分享的是關(guān)于STL中Vector的內(nèi)容,Vector的內(nèi)容于string非常相似,只要會(huì)使用string那么學(xué)習(xí)Vector時(shí)會(huì)非常流暢。 目錄 1.vector介紹? 2.vector的簡(jiǎn)單實(shí)用 2.1.簡(jiǎn)單的無(wú)參構(gòu)造 ??編輯2.2.簡(jiǎn)單帶參構(gòu)造 2.3.迭代器區(qū)間初始化 2.4.vector的遍歷 2.5.vector插入數(shù)據(jù) 2.6.擴(kuò)容機(jī)制? 不同平臺(tái)

    2024年02月10日
    瀏覽(12)
  • 【C++】vector 基本使用(詳解)

    【C++】vector 基本使用(詳解)

    目錄 一,vector 的介紹 二,vector 的定義 1,vector() 2,vector(size_type n, const value_type val = value_type()) 3,vector (const vector x) 4,vector (InputIterator first, InputIterator last); 三,vector iterator 的使用 1,begin + end 2,rbegin + rend? 四,vector 空間增長(zhǎng)問(wèn)題 1,size 2,capacity 3,empty 4,reserve 5,

    2024年02月03日
    瀏覽(71)
  • C++中的Vector類(lèi)詳解

    本文詳細(xì)介紹了C++中vector類(lèi)的使用方法,包括其定義、迭代器的使用、空間函數(shù)、擴(kuò)容問(wèn)題以及增刪查改操作,旨在幫助讀者更好地理解和使用vector。

    2024年02月05日
    瀏覽(15)
  • 【C++ STL】vector類(lèi)最全詳解(什么是vector?vector類(lèi)的常用接口有哪些?)

    【C++ STL】vector類(lèi)最全詳解(什么是vector?vector類(lèi)的常用接口有哪些?)

    目錄 一、前言 二、什么是vector ? ???vector的基本概念 ??vector的作用是什么 ??總結(jié) 三、 vector的(一維)定義 四、vector(一維)常用接口的使用 ???vector的常見(jiàn)構(gòu)造(初始化) ???vector的遍歷及迭代器的操作 ① operator[ ]? ② at ( )? ③迭代器? ③ 范圍for? ???vector的常見(jiàn)容量操

    2024年02月03日
    瀏覽(25)
  • 動(dòng)態(tài)數(shù)組和C++ std::vector詳解

    std::vector 是C++的默認(rèn)動(dòng)態(tài)數(shù)組,其與array最大的區(qū)別在于vector的數(shù)組是動(dòng)態(tài)的,即其大小可以在運(yùn)行時(shí)更改。 std::vector 是封裝動(dòng)態(tài)數(shù)組的順序容器,且該容器中元素的存取是連續(xù)的。 vector的存儲(chǔ)是自動(dòng)管理,不需要人為操作自動(dòng)實(shí)現(xiàn)按需擴(kuò)張收縮。但實(shí)現(xiàn)自動(dòng)管理的代價(jià)就是

    2024年02月13日
    瀏覽(18)
  • SVN介紹以及常見(jiàn)用法(包括詳細(xì)步驟)

    SVN介紹以及常見(jiàn)用法(包括詳細(xì)步驟)

    代碼版本管理工具 它能記住你每次的修改查看所有的修改記錄恢復(fù)到任何歷史版本恢復(fù)已經(jīng)刪除的文件 使用簡(jiǎn)單,上手快 目錄級(jí)權(quán)限控制,企業(yè)安全必備 子目錄Checkout,減少不必要的文件檢出 開(kāi)發(fā)人員用來(lái)做代碼的版本管理 用來(lái)存儲(chǔ)一些重要的文件,比如合同 公司內(nèi)部文件

    2024年02月15日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包