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

C++示例講解vector容器

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

vector基本概念

功能:

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

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

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

動態(tài)擴展:

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

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

  • 創(chuàng)建一個 T 類型的空 vector
  • 創(chuàng)建時可以指定容量大小
  • 創(chuàng)建時不但可以指定容量大小,還可以指定元素初始值
  • 創(chuàng)建一個基于已有 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);

向一個 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; //默認構(gòu)造、無參構(gòu)造
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
	}
	printVector(v1);
	//通過區(qū)間方式進行構(gòu)造
	vector<int> v2(v1.begin(), v1.end());
	printVector(v2);
	//n個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; //默認構(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)會開辟一個大于此時size大小的容量,
		//如果在往里面加,知道大于容量的值,就會重新開辟一個內(nèi)存,這就是動態(tài)擴展
		cout << "v1的大小為" << v1.size() << endl;
	}
	//重新指定v1大小
	v1.resize(20, 100);
	printVector(v1);
	v1.resize(5);
	printVector(v1);
}

vector容器插入和刪除

/*
- push_back(ele)   //尾部插入元素ele
- pop_back();      //刪除最后一個元素
- insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
- insert(const_iterator pos, int count, ele); //迭代器指向位置pos插入count個元素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個1000
	printVector(v1);
	//刪除 頭部元素
	v1.erase(v1.begin()); //刪除頭部第一個元素
	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;
	//獲取第一個元素
	cout << "第一個元素" << v1.front() << endl;
	//獲取最后一個元素
	cout << "最后一個元素" << 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、實際用途
//巧用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了,但是容量沒有變小,這樣會浪費空間
	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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

    C語言switch 語句的用法詳解

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

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

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

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

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

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

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

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

    函數(shù)是一組一起執(zhí)行一個任務的語句。每個?C?程序都至少有一個函數(shù),即主函數(shù)?main()?,所有簡單的程序都可以定義其他額外的函數(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++如何實現(xiàn)簡單的計時器詳解

    C++如何實現(xiàn)簡單的計時器詳解

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

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

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

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

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

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

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

最新評論

阳曲县| 宜章县| 衡东县| 原阳县| 大城县| 墨玉县| 赞皇县| 永定县| 民县| 平安县| 香格里拉县| 明光市| 沛县| 搜索| 平凉市| 布尔津县| 津南区| 大姚县| 瑞昌市| 定边县| 兰溪市| 彩票| 巨野县| 隆化县| 黄梅县| 历史| 剑阁县| 松桃| 谢通门县| 凤城市| 南雄市| 思茅市| 凉山| 嫩江县| 新邵县| 临沧市| 渭南市| 镇沅| 论坛| 达尔| 苗栗市|