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

C++示例講解vector容器

 更新時(shí)間:2022年07月02日 09:50:07   作者:zzsyxl  
這篇文章主要介紹了C++?容器?Vector?的使用方法,Vector?是一個(gè)能夠存放任意類型的動(dòng)態(tài)數(shù)組,有點(diǎn)類似數(shù)組,是一個(gè)連續(xù)地址空間,下文更多詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下

vector基本概念

功能:

vector數(shù)據(jù)結(jié)構(gòu)和數(shù)組非常相似,也稱為單端數(shù)組

vector與普通數(shù)組區(qū)別:

不同之處在于數(shù)組是靜態(tài)空間,而vector可以動(dòng)態(tài)擴(kuò)展

動(dòng)態(tài)擴(kuò)展:

并不是在原空間之后繼續(xù)接新空間,而是找更大的內(nèi)存空間,然后將元數(shù)據(jù)拷貝新空間,釋放原空間

創(chuàng)建 vector 的各種方法

  • 創(chuàng)建一個(gè) T 類型的空 vector
  • 創(chuàng)建時(shí)可以指定容量大小
  • 創(chuàng)建時(shí)不但可以指定容量大小,還可以指定元素初始值
  • 創(chuàng)建一個(gè)基于已有 vector 的拷貝
  • 基于數(shù)組來創(chuàng)建 vector
vector<int> v1;
vector<int> v2(5);
vector<int> v3(5, 0);
vector<int> copyOf(v3);
int arr[] = { 1,2,3,5,7,9 };
vector<int> v5(arr, arr + 6);
	v5.push_back(11);

向一個(gè) vector 中添加元素

	bool isEmpty = v1.empty();

vector容器的構(gòu)造

void printVector(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
void test01()
{
	vector<int> v1; //默認(rèn)構(gòu)造、無參構(gòu)造
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
	}
	printVector(v1);
	//通過區(qū)間方式進(jìn)行構(gòu)造
	vector<int> v2(v1.begin(), v1.end());
	printVector(v2);
	//n個(gè)elem方式構(gòu)造
	vector<int>v3(10, 100);
	printVector(v3);
	//拷貝構(gòu)造
	vector<int> v4(v3);
	printVector(v4);
}

vector賦值操作

void printVector(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
void test01()
{
	vector<int> v1; //默認(rèn)構(gòu)造、無參構(gòu)造
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
	}
	printVector(v1);
	//賦值操作
	vector<int> v2;
	v2 = v1;
	printVector(v2);
	//assign
	vector<int> v3;
	v3.assign(v1.begin(), v1.end());
	printVector(v3);
}

vector容量和大小

void test01()
{
	vector<int> v1;
	for (int i = 0; i < 18; i++)
	{
		v1.push_back(i);
	}
	printVector(v1);
	if (v1.empty()) //為空
	{
		cout << "v1為空" << endl;
	}
	else
	{
		cout << "v1不為空" << endl;
		cout << "v1的容量為:" << v1.capacity() << endl; //系統(tǒng)會(huì)開辟一個(gè)大于此時(shí)size大小的容量,
		//如果在往里面加,知道大于容量的值,就會(huì)重新開辟一個(gè)內(nèi)存,這就是動(dòng)態(tài)擴(kuò)展
		cout << "v1的大小為" << v1.size() << endl;
	}
	//重新指定v1大小
	v1.resize(20, 100);
	printVector(v1);
	v1.resize(5);
	printVector(v1);
}

vector容器插入和刪除

/*
- push_back(ele)   //尾部插入元素ele
- pop_back();      //刪除最后一個(gè)元素
- insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
- insert(const_iterator pos, int count, ele); //迭代器指向位置pos插入count個(gè)元素ele
- erase(const_iterator pos); //刪除迭代器指向的元素
- erase(const_iterator start, const_iterator end); //刪除迭代器從start到end之間的元素
- clear(); //刪除所有元素
*/

void test01()
{
	vector<int> v1;
	//尾插
	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(50);
	printVector(v1);
	//尾刪
	v1.pop_back();
	printVector(v1);
	//頭部插入
	v1.insert(v1.begin(),100);//頭部插入100
	printVector(v1);
	v1.insert(v1.begin(), 2, 1000); //頭部插入2個(gè)1000
	printVector(v1);
	//刪除 頭部元素
	v1.erase(v1.begin()); //刪除頭部第一個(gè)元素
	printVector(v1);
	v1.erase(v1.begin(),v1.end()); //刪除全部元素
	printVector(v1);
	//清空
	v1.clear();
	printVector(v1);
}

vector數(shù)據(jù)存取

void test01()
{
	vector<int> v1;
	//尾插
	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(50);
	//printVector(v1);
	//利用[]方式訪問數(shù)組中元素
	for (int i = 0; i < v1.size(); i++) {
		cout << v1[i] << " ";
	}
	cout << endl;
	//利用at方式訪問元素
	for (int i = 0; i < v1.size(); i++) {
		cout << v1.at(i) << " ";
	}
	cout << endl;
	//獲取第一個(gè)元素
	cout << "第一個(gè)元素" << v1.front() << endl;
	//獲取最后一個(gè)元素
	cout << "最后一個(gè)元素" << v1.back() << endl;
}

vector互換容器

void test01()
{
	vector<int> v1;
	for (int i = 1; i < 10; i++) {
		v1.push_back(i);
	}
	printVector(v1);
	vector<int> v2;
	for (int i = 9; i > 0; i--) {
		v2.push_back(i);
	}
	printVector(v2);
	v1.swap(v2);
	printVector(v1);
	printVector(v2);
}
//2、實(shí)際用途
//巧用swap可以收縮內(nèi)存空間
void test02()
{
	vector<int> v;
	for (int i = 0; i < 100000; i++)
	{
		v.push_back(i);
	}
	cout << "v的容量: " << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;
	v.resize(3);//重新制定大小
	//大小變成3了,但是容量沒有變小,這樣會(huì)浪費(fèi)空間
	cout << "v的容量: " << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;
	//巧用swap收縮內(nèi)存
	//容量和大小都成了3
	vector<int>(v).swap(v);
	cout << "v的容量: " << v.capacity() << endl;
	cout << "v的大小:" << v.size() << endl;
}

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

相關(guān)文章

  • C語言switch 語句的用法詳解

    C語言switch 語句的用法詳解

    本文主要介紹C 語言中的switch 語句,這里提供示例代碼和詳細(xì)介紹,希望能幫助學(xué)習(xí)C語言的小伙伴
    2016-07-07
  • C語言 完整游戲項(xiàng)目坦克大戰(zhàn)詳細(xì)代碼

    C語言 完整游戲項(xiàng)目坦克大戰(zhàn)詳細(xì)代碼

    《坦克大戰(zhàn)》以二戰(zhàn)坦克為題材,既保留了射擊類游戲的操作性,也改進(jìn)了射擊類游戲太過于復(fù)雜難玩的高門檻特點(diǎn),集休閑與競(jìng)技于一身。經(jīng)典再度襲來,流暢的畫面,瘋狂的戰(zhàn)斗,讓玩家再次進(jìn)入瘋狂坦克的世界。玩家的目標(biāo)是控制坦克躲避危險(xiǎn),消滅掉所有的敵人即可進(jìn)入下一關(guān)
    2021-11-11
  • C++內(nèi)存模型與名稱空間概念講解

    C++內(nèi)存模型與名稱空間概念講解

    這篇文章主要介紹了C++內(nèi)存模型與名稱空間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • C/C++實(shí)現(xiàn)字符串模糊匹配

    C/C++實(shí)現(xiàn)字符串模糊匹配

    本文分別給大家介紹了2個(gè)C++在Linux平臺(tái)和windows平臺(tái)下實(shí)現(xiàn)字符串模糊匹配的方法,基本的核心思想都是一樣的,均是使用fnmatch函數(shù),有需要的小伙伴可以參考下。
    2016-04-04
  • C語言超全面講解函數(shù)的使用方法上

    C語言超全面講解函數(shù)的使用方法上

    函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語句。每個(gè)?C?程序都至少有一個(gè)函數(shù),即主函數(shù)?main()?,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù),由于篇幅過大,分為兩篇講解,下面開始上篇
    2022-04-04
  • 關(guān)于C語言 const 和 define 區(qū)別

    關(guān)于C語言 const 和 define 區(qū)別

    這篇文章主要介紹了關(guān)于C語言 const 和 define 區(qū)別 的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器詳解

    C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器詳解

    因?yàn)樽罱e著無聊就想著要不用C++寫點(diǎn)什么東西,仔細(xì)想了想其實(shí)自己的C++學(xué)的也不怎么好,寫個(gè)簡(jiǎn)單的計(jì)時(shí)器吧!所以下面這篇文章主要介紹了利用C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C語言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”實(shí)例代碼

    C語言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”實(shí)例代碼

    這篇文章主要介紹了C語言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++實(shí)現(xiàn)下載的代碼

    C++實(shí)現(xiàn)下載的代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)下載的代碼,以下載百度圖片為例較為完整的講述了C++下載的具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • C語言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng)

    C語言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評(píng)論

苗栗县| 错那县| 乌鲁木齐县| 云浮市| 太仆寺旗| 大宁县| 深州市| 东宁县| 土默特左旗| 建阳市| 项城市| 名山县| 瓦房店市| 百色市| 邯郸县| 揭东县| 温州市| 西宁市| 维西| 界首市| 奉节县| 南和县| 屯留县| 抚顺市| 闵行区| 井冈山市| 大新县| 汨罗市| 竹溪县| 利川市| 沁阳市| 方山县| 华坪县| 大竹县| 奉化市| 延庆县| 兴文县| 临沭县| 介休市| 潜江市| 怀化市|