天天看點

C++ 連結清單list1 構造函數2 指派和交換3 大小操作4 插入和删除5 資料存取6 反轉和排序

文章目錄

  • 1 構造函數
  • 2 指派和交換
  • 3 大小操作
  • 4 插入和删除
  • 5 資料存取
  • 6 反轉和排序

1 構造函數

#include<iostream>
#include<list>

std::ostream& operator<<(std::ostream&, std::list<int>);

int main()
{
	// 1、list<T>():預設構造函數
	std::list<int> l1;
	std::cout << "1:" << l1 << std::endl;
	// 2、list(begin, end):拷貝指定區間
	l1.push_back(10); // 末尾添加元素,後面會講到
	l1.push_back(20);
	std::list<int> l2(l1.begin(), l1.end());
	std::cout << "2:" << l2 << std::endl;
	// 3、list(n, elem):添加n個指定元素
	std::list<int> l3(10, 8);
	std::cout << "3:" << l3 << std::endl;
	// 4、list(const list&):拷貝構造函數
	std::list<int> l4(l2);
	std::cout << "4:" << l4 << std::endl;
}

std::ostream& operator<<(std::ostream& cout, std::list<int> l)
{
	for (std::list<int>::iterator i = l.begin(); i != l.end(); i++)
	{
		cout << *i << " ";
	}
	return cout;
}
           

  輸出如下:

1:
2:10 20
3:8 8 8 8 8 8 8 8 8 8
4:10 20
           

2 指派和交換

#include<iostream>
#include<list>

std::ostream& operator<<(std::ostream&, std::list<int>);

int main()
{
	// 1、list& operator=(const list&):重載指派
	std::list<int> l;
	l.push_back(5);
	l.push_back(10);
	std::list<int> l1 = l;
	std::cout << "1:" << l1 << std::endl;
	// 2、assign(begin, end):指定區間指派
	std::list<int> l2;
	l2.assign(l1.begin(), l1.end());
	l2.push_back(15);
	std::cout << "2:" << l2 << std::endl;
	// 3、assign(n, elem):指派n個指定元素
	std::list<int> l3;
	l3.assign(10, 1);
	std::cout << "3:" << l3 << std::endl;
	// 4、swap(l):将l與本身交換
	std::list<int> l4;
	l4.swap(l1);
	std::cout << "4:" << l4 << std::endl;
}

std::ostream& operator<<(std::ostream& cout, std::list<int> l)
{
	for (std::list<int>::iterator i = l.begin(); i != l.end(); i++)
	{
		cout << *i << " ";
	}
	return cout;
}
           

  輸出如下:

1:5 10
2:5 10 15
3:1 1 1 1 1 1 1 1 1 1
4:5 10
           

3 大小操作

#include<iostream>
#include<list>

std::ostream& operator<<(std::ostream&, std::list<int>);

int main()
{
	// 1、size():檢視元素個數
	std::list<int> l;
	l.push_back(5);
	l.push_back(10);
	std::cout << "1:" << l.size() << std::endl;
	// 2、empty():檢視是否為空
	std::cout << "2:" << l.empty() << std::endl;
	// 3、resize(n):更改大小,變長則設定為0,變短則删除
	l.resize(4);
	std::cout << "3:" << l << std::endl;
	// 4、resize(n, elem):設定預設補足元素
	l.resize(10, 4);
	std::cout << "4:" << l << std::endl;
}

std::ostream& operator<<(std::ostream& cout, std::list<int> l)
{
	for (std::list<int>::iterator i = l.begin(); i != l.end(); i++)
	{
		cout << *i << " ";
	}
	return cout;
}
           

  輸出如下:

1:2
2:0
3:5 10 0 0
4:5 10 0 0 4 4 4 4 4 4
           

4 插入和删除

#include<iostream>
#include<list>

std::ostream& operator<<(std::ostream&, std::list<int>);

int main()
{
	// 1、push_back(elem):尾插
	std::list<int> l;
	l.push_back(5);
	l.push_back(10);
	std::cout << "1:" << l << std::endl;
	// 2、pop_back():删除尾
	l.pop_back();
	std::cout << "2:" << l << std::endl;
	// 3、push_front():頭插
	l.push_front(10);
	std::cout << "3:" << l << std::endl;
	// 4、pop_front():頭删
	l.pop_front();
	std::cout << "4:" << l << std::endl;
	// 5、insert(pos, elem):指定位置插入元素,并傳回新資料的位置
	l.insert(l.begin(), 15);
	std::cout << "5:" << l << std::endl;
	// 6、insert(pos, begin, end):指定位置插入指定區間
	l.insert(l.end(), l.begin(), l.end());
	std::cout << "6:" << l << std::endl;
	// 7、erase(pos):删除指定位置
	l.erase(l.begin());
	std::cout << "7:" << l << std::endl;
	// 8、erase(begin, end):删除指定區間
	l.erase(l.begin(), l.end());
	std::cout << "8:" << l << std::endl;
	// 9、remove(elem):删除所有=elem的元素
	l.assign(10, 5);
	l.resize(20);
	l.remove(5);
	std::cout << "9:" << l << std::endl;
	// 10、clear():清空
	l.clear();
	std::cout << "10:" << l << std::endl;
}

std::ostream& operator<<(std::ostream& cout, std::list<int> l)
{
	for (std::list<int>::iterator i = l.begin(); i != l.end(); i++)
	{
		cout << *i << " ";
	}
	return cout;
}
           

  輸出如下:

1:5 10
2:5
3:10 5
4:5
5:15 5
6:15 5 15 5
7:5 15 5
8:
9:0 0 0 0 0 0 0 0 0 0
10:
           

5 資料存取

#include<iostream>
#include<list>

int main()
{
	// 1、front():擷取頭部
	std::list<int> l;
	l.push_back(5);
	l.push_back(10);
	std::cout << "1:" << l.front() << std::endl;
	// 2、back():擷取尾部
	std::cout << "1:" << l.back() << std::endl;
}
           

  輸出如下:

1:5
1:10
           

6 反轉和排序

#include<iostream>
#include<list>

std::ostream& operator<<(std::ostream&, std::list<int>);

int main()
{
	// 1、reverse():反轉
	std::list<int> l;
	l.push_back(5);
	l.push_back(10);
	l.push_back(1);
	std::cout << "反轉前:" << l << std::endl;
	l.reverse();
	std::cout << "反轉後:" << l << std::endl;
	// 2、sort():排序
	l.reverse();
	std::cout << "排序前:" << l << std::endl;
	l.sort();
	std::cout << "排序後:" << l << std::endl;
}

std::ostream& operator<<(std::ostream& cout, std::list<int> l)
{
	for (std::list<int>::iterator i = l.begin(); i != l.end(); i++)
	{
		cout << *i << " ";
	}
	return cout;
}
           

  輸出如下:

反轉前:5 10 1
反轉後:1 10 5
排序前:5 10 1
排序後:1 5 10
           

繼續閱讀