亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ STL中vector容器的使用

 更新時間:2022年03月11日 09:56:54   作者:code-016  
這篇文章主要為大家詳細介紹了C++ vector容器的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、vector

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

(1)區(qū)分size()和capacity()

  • size():返回容納的元素個數(shù)
  • capacity():返回當前分配存儲的容量

(2)迭代器失效

在這里插入圖片描述

(3)區(qū)分const_iterator和const iterator

  • const_iterator:常性迭代器,指向的對象的屬性為常性;
  • const iterator:常性的普通迭代器,迭代器自身屬性為常性;

(4)區(qū)分reserve()和resize()

reserve():預留存儲空間,只改變capacity

增加 vector 的容量到大于或等于 new_cap 的值。若 new_cap 大于當前的 capacity() ,則分配新存儲,否則該方法不做任何事。reserve() 不更改 vector 的 size 。

若 new_cap 大于 capacity() ,則所有迭代器,包含尾后迭代器和所有到元素的引用都被非法化。否則,沒有迭代器或引用被非法化。

#include <iostream>
#include <vector>
using namespace std;
class Value
{
public:
	Value()
	{
		cout << "Value()"<< endl;
	}
	~Value()
	{
		cout << "~Value()" << endl;
	}
};
void Vector_user()
{
	vector<Value> vec;
	//vec.resize(10);
	vec.reserve(10);
	cout << vec.capacity()<< endl;
	cout << vec.size()<< endl;
}
int main()
{
	Vector_user();
	return 0;
}

在這里插入圖片描述

resize():改變容器中可存儲元素的個數(shù)size和capacity,并調用默認的構造函數(shù)

#include <iostream>
#include <vector>
using namespace std;
class Value
{
public:
	Value()
	{
		cout << "Value()"<< endl;
	}
	~Value()
	{
		cout << "~Value()" << endl;
	}
};
void Vector_user()
{
	vector<Value> vec;
	vec.resize(10);
	//vec.reserve(10);
	cout << vec.capacity()<< endl;
	cout << vec.size()<< endl;
}
int main()
{
	Vector_user();
	return 0;
}

在這里插入圖片描述

(5)push_back和emplace

1.push_back()

#include <iostream>
#include <vector>
using namespace std;
class Object
{
private:
	int val;
public:
	Object(int x = 0):val(x)
	{
		cout << "Object(int x)"<< endl;
	}
	Object(const Object& src): val(src.val)
	{
		cout << "Object(const Object& src)" << endl;
	}
	Object(Object&& src) : val(src.val)
	{
		cout << "Object(Object&& src)" << endl;
	}
	Object& operator=(const Object& src)
	{
		val = src.val;
		cout << "=" << endl;
		return *this;
	}
	Object& operator=(Object&& src)
	{
		val = src.val;
		cout << "=&" << endl;
		return *this;
	}
	~Object()
	{
		cout << "~Object()" << endl;
	}
};
void fun()
{
	std::vector<Object> vcobj;
	vcobj.reserve(5);
	vcobj.push_back(10);
	//vcobj.push_back(Object(10));
}
int main()
{
	fun();
	return 0;
}

push_back(10);push_back(Object(10));兩種方式構造對象的順序個數(shù)都相同!

在這里插入圖片描述

Object obj(10);

vcobj.push_back(obj);

在這里插入圖片描述

2. emplace()原位構造

void fun()
{
	std::vector<Object> vcobj;
	vcobj.reserve(5);
	vcobj.emplace_back(10);
}

在這里插入圖片描述

void fun()
{
	std::vector<Object> vcobj;
	vcobj.reserve(5);
	vcobj.emplace_back(Object(10));
}

在這里插入圖片描述

void fun()
{
	std::vector<Object> vcobj;
	vcobj.reserve(5);
	Object obj(10);
	vcobj.emplace_back(obj);
}

在這里插入圖片描述

(6)關于原位構造(定位new + 完美轉發(fā))

定位new:直接在指定的地址空間內調用構造函數(shù)

完美轉發(fā):保留傳參的右值屬性

可變參數(shù):根據(jù)傳參個數(shù)類型,調用不同的構造函數(shù)

template<class T, class ...Arg>
void Make(T* p, Arg... arg)
{
	new(p) T(std::forward<Arg...>(arg)...);
}
int main()
{
	//1.開辟空間
	Object* p = (Object*)malloc(sizeof(Object));
	//2.在p指向的地址空間調用構造Object(10)
	Make(p, 10);
	//3.釋放空間并調用析構函數(shù)
	delete p;
	return 0;
}

在這里插入圖片描述

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!  

相關文章

  • 380行C++代碼實現(xiàn)掃雷小游戲

    380行C++代碼實現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細介紹了380行C++代碼實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C++使用Kruskal和Prim算法實現(xiàn)最小生成樹

    C++使用Kruskal和Prim算法實現(xiàn)最小生成樹

    這篇文章主要介紹了C++使用Kruskal和Prim算法實現(xiàn)最小生成樹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 使用C語言繪制柱形圖的示例代碼

    使用C語言繪制柱形圖的示例代碼

    常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,這篇文章主要為大家介紹了C語言中繪制條形圖和柱形圖的方法,需要的可以參考下
    2024-02-02
  • 深入淺析C++中的#,##,和

    深入淺析C++中的#,##,和

    這篇文章主要介紹了C++中的#,##,和"的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • 劍指offer之判斷鏈表是否包含環(huán)

    劍指offer之判斷鏈表是否包含環(huán)

    今天小編就為大家分享一篇關于劍指offer之判斷鏈表是否包含環(huán),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言復數(shù)的加減及輸出結構體

    C語言復數(shù)的加減及輸出結構體

    大家好,本篇文章主要講的是C語言復數(shù)的加減及輸出結構體,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • c++重載運算符時返回值為類的對象或者返回對象的引用問題

    c++重載運算符時返回值為類的對象或者返回對象的引用問題

    這篇文章主要介紹了c++重載運算符時返回值為類的對象或者返回對象的引用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言中常量指針與指針常量區(qū)別淺析

    C語言中常量指針與指針常量區(qū)別淺析

    這篇文章主要介紹了C語言中常量指針與指針常量區(qū)別,有需要的朋友可以參考一下
    2013-12-12
  • C語言柔性數(shù)組詳解

    C語言柔性數(shù)組詳解

    這篇文章主要介紹了C語言柔性數(shù)組,通過實例分析了不完整類型、結構體及柔性數(shù)組等概念,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • C++之內存泄漏排查詳解

    C++之內存泄漏排查詳解

    這篇文章主要介紹了c++ 如何排查內存泄漏,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-10-10

最新評論