文章目錄
- 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