中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++?list怎么使用

發布時間:2022-07-04 11:55:25 來源:億速云 閱讀:168 作者:iii 欄目:開發技術

本篇內容介紹了“C++ list怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、list的介紹

list的介紹

  • list是可以以O(1)的時間復雜度任意位置進行插入和刪除的序列式容器,并且該容器可以前后雙向迭代。

  • list的底層是雙向鏈表結構,雙向鏈表中每個元素存儲在互不相關的獨立節點中,在節點中通過指針指向其前一個元素和后一個元素。

  • list與forward_list非常相似:最主要的不同在于forward_list是單鏈表,只能朝前迭代,已讓其更簡單高效。

  • 與其他的序列式容器相比(array,vector,deque),list通常在任意位置進行插入、移除元素的執行效率更好。

  • 與其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的隨機訪問,比如:要訪問list的第6個元素,必須從已知的位置(比如頭部或者尾部)迭代到該位置,在這段位置上迭代需要線性的時間開銷;list還需要一些額外的空間,以保存每個節點的相關聯信息(對于存儲類型較小元素的大list來說這可能是一個重要的因素)

二、list的使用

2.1 list的構造函數

構造函數接口說明
list()空構造
list (size_type n, const value_type& val = value_type())初始化的list中包含n個val值
list (const list& x)拷貝構造函數
list (InputIterator first, InputIterator last)用迭代器區間[first,last)構造list
void test_list1()
{
	// 空構造
	list<int> l1;
	l1.push_back(1);
	l1.push_back(2);
	l1.push_back(3);
	l1.push_back(4);
	for (int e: l1)
	{
		cout << e << " ";
	}
	cout << endl;
	// 初始化的list中包含n個val值
	list<int> l2(4,10);
	for (int e : l2)
	{
		cout << e << " ";
	}
	cout << endl;
	// 拷貝構造函數
	list<int> l3(l1);
	for (int e : l3)
	{
		cout << e << " ";
	}
	cout << endl;
	// 用迭代器區間[first,last)構造list
	list<int> l4(l3.begin(), l3.end());
	for (int e : l4)
	{
		cout << e << " ";
	}
}

2.2 list迭代器的使用

函數聲明接口說明
begin+end返回第一個元素的迭代器+返回最后一個元素的下一個位置的迭代器
rbegin+rend返回end位置+返回begin位置
// 正\反向迭代器
void test_list2()
{
	list<int> lt;
	lt.push_back(1);
	lt.push_back(2);
	lt.push_back(3);
	lt.push_back(4);
	// 正向迭代器
	list<int>::iterator it = lt.begin();
	while (it!=lt.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	// 反向迭代器
	list<int>::reverse_iterator rit = lt.rbegin();
	while (rit!=lt.rend())
	{
		cout << *rit << " ";
		++rit;
	}
}

2.3 list相關的容量大小相關的函數

函數聲明接口說明
empty檢測list是否為空,是返回true,否返回false
size返回list中有效結點的個數
void test_list3()
{
	list<int> l1;
	l1.push_back(1);
	l1.push_back(2);
	l1.push_back(3);
	l1.push_back(4);
	cout << l1.size() << endl; // 4
	cout << l1.empty() << endl;// 0
}

2.4 list數據的訪問相關的函數

函數聲明接口說明
front返回list中的第一個結點值的引用
back返回list中最后一個結點值的引用
void test_list4()
{
	list<int> l1;
	l1.push_back(1);
	l1.push_back(2);
	l1.push_back(3);
	l1.push_back(4);
	cout << l1.front() << endl; // 1
	cout << l1.back() << endl;  // 4
}

2.5 list的數據調整相關的函數

函數聲明接口說明
push_front在首元素前插入元素
pop_front刪除第一個元素
push_back尾插
pop_back尾刪
insert在pos位置插入值
erase刪除pos位置的值
swap交換兩個list中的值
clear清空list中的有效元素
void test_list5()
{
	list<int> l;
	l.push_back(1);
	l.push_front(2);
	list<int>::iterator it = l.begin();
	++it;
	l.insert(it, 20);
	for (int e : l)
	{
		cout << e << " ";
	}
	cout << endl;
	cout << "------" << endl;
	l.clear();
	for (int e : l)
	{
		cout << e << " ";
	}
}

2.6 list中其他函數操作

函數聲明接口說明
sort排序
reverse逆置
unique去重(去重之前一般需要先排序)
remove刪除給定的一個值
void test_list6()
{
	list<int> l1;
	l1.push_back(1);
	l1.push_back(7);
	l1.push_back(3);
	l1.push_back(3);
	l1.push_back(3);
	l1.push_back(4);
	// 排序
	l1.sort();
	for (int e : l1)
	{
		cout << e << " ";
	}
	cout << endl;
	// 逆置
	l1.reverse();
	for (int e : l1)
	{
		cout << e << " ";
	}
	cout << endl;
	// 去重
	l1.unique();
	for (int e : l1)
	{
		cout << e << " ";
	}
	cout << endl;
	// 刪除給定的一個值
	l1.remove(7);
	for (int e : l1)
	{
		cout << e << " ";
	}
	cout << endl;
}

“C++ list怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭州市| 永兴县| 松桃| 砀山县| 安阳市| 屯昌县| 花莲县| 昆山市| 景谷| 内乡县| 宜黄县| 富阳市| 怀安县| 长白| 城固县| 阆中市| 东乡族自治县| 静安区| 卓尼县| 拉萨市| 闽侯县| 清流县| 盐亭县| 江山市| 台江县| 青铜峡市| 延边| 红桥区| 沧源| 陕西省| 华坪县| 甘洛县| 政和县| 保定市| 宕昌县| 鹿邑县| 乌兰察布市| 宜兴市| 左权县| 荣成市| 察隅县|