包含头文件:list
整合
//list:链表
void PrintList(list<int>& l) {
//迭代器打印链表
for (list<int>::iterator it = l.begin(); it != l.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void list_test_01() {
//构造
list<int> l1; //默认构造
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
list<int> l2(l1.begin(), l1.end()); //区间构造
list<int> l3(l2); //拷贝构造
list<int> l4(5, 10); //l4构造为5个10
}
void list_test_02() {
//赋值和交换
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
list<int> l2;
l2 = l1; //重载=用于赋值
list<int> l3;
//l.assign(beg, end):区间赋值,两个迭代器区间
l3.assign(l1.begin(), l1.end());
list<int> l4;
l4.assign(5, 10); //给l4赋值5个10
l3.swap(l4); //交换l3和l4
}
void list_test_03() {
//大小操作
list<int> l;
for (int i = 0; i < 5; i++) {
l.push_back(i);
}
cout << l.size() << endl; //大小
l.empty(); //判空
//重新指定大小,l.resize(n):若n>原大小,空余空间用0填充,
//若<原大小,删除尾部元素
l.resize(10);
//重新指定大小,l.resize(n, m):若n>原大小,空余空间用m填充,
//若<原大小,删除尾部元素
l.resize(20, 100);
}
void list_test_04() {
//插入和删除
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i); //尾插
}
for (int i = 10; i < 15; i++) {
l1.push_front(i); //头插
}
l1.pop_back(); //尾删
l1.pop_front(); //头删
list<int> l2;
for (int i = 0; i < 5; i++) {
l2.push_back(i);
}
//l.insert(iterator, n):在迭代器的位置插入元素n,
//前一个参数为迭代器
l2.insert(l2.begin(), 100);
//l.insert(iterator, n, m):在迭代器的位置插入n个m,
//第一个参数为迭代器
l2.insert(l2.begin(), 2, 500);
//l2.insert(l2::iterator, l1.beg, l1.end):
//在l2的迭代器位置插入区间,l1的开始结束区间为迭代器
l2.insert(l2.begin(), l1.begin(), l1.end());
list<int> l3;
for (int i = 0; i < 5; i++) {
l3.push_back(i);
}
//l.erase(iterator):删除迭代器位置的元素,参数为迭代器
l3.erase(l3.begin());
//l.erase(beg, end):删除两个迭代器之间的元素,参数均为迭代器
l3.erase(l3.begin(), l3.end());
l3.clear(); //清空
list<int> l4;
for (int i = 0; i < 5; i++) {
l4.push_back(i);
}
l4.push_back(100);
l4.push_back(100);
l4.remove(100); //l.remove(n):删除l中所有值=n的元素
}
void list_test_05() {
//数据存取
list<int> l;
for (int i = 0; i < 5; i++) {
l.push_back(i);
}
cout << l.front() << endl; //返回l的首元素
cout << l.back() << endl; //返回l的尾元素
}
void list_test_06() {
//反转和排序
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
l1.reverse(); //反转
list<int> l2;
l2.push_back(3);
l2.push_back(5);
l2.push_back(1);
l2.push_back(4);
l2.push_back(2);
l2.sort(); //排序:从小到大
}
迭代器遍历(链表不支持随机存取)
void PrintList(list<int>& l) {
//迭代器打印链表
for (list<int>::iterator it = l.begin(); it != l.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
构造
void list_test_01() {
//构造
list<int> l1; //默认构造
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
list<int> l2(l1.begin(), l1.end()); //区间构造
list<int> l3(l2); //拷贝构造
list<int> l4(5, 10); //l4构造为5个10
}
赋值和交换
void list_test_02() {
//赋值和交换
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
list<int> l2;
l2 = l1; //重载=用于赋值
list<int> l3;
//l.assign(beg, end):区间赋值,两个迭代器区间
l3.assign(l1.begin(), l1.end());
list<int> l4;
l4.assign(5, 10); //给l4赋值5个10
l3.swap(l4); //交换l3和l4
}
大小操作
void list_test_03() {
//大小操作
list<int> l;
for (int i = 0; i < 5; i++) {
l.push_back(i);
}
cout << l.size() << endl; //大小
l.empty(); //判空
//重新指定大小,l.resize(n):若n>原大小,空余空间用0填充,
//若<原大小,删除尾部元素
l.resize(10);
//重新指定大小,l.resize(n, m):若n>原大小,空余空间用m填充,
//若<原大小,删除尾部元素
l.resize(20, 100);
}
插入和删除
void list_test_04() {
//插入和删除
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i); //尾插
}
for (int i = 10; i < 15; i++) {
l1.push_front(i); //头插
}
l1.pop_back(); //尾删
l1.pop_front(); //头删
list<int> l2;
for (int i = 0; i < 5; i++) {
l2.push_back(i);
}
//l.insert(iterator, n):在迭代器的位置插入元素n,
//前一个参数为迭代器
l2.insert(l2.begin(), 100);
//l.insert(iterator, n, m):在迭代器的位置插入n个m,
//第一个参数为迭代器
l2.insert(l2.begin(), 2, 500);
//l2.insert(l2::iterator, l1.beg, l1.end):
//在l2的迭代器位置插入区间,l1的开始结束区间为迭代器
l2.insert(l2.begin(), l1.begin(), l1.end());
list<int> l3;
for (int i = 0; i < 5; i++) {
l3.push_back(i);
}
//l.erase(iterator):删除迭代器位置的元素,参数为迭代器
l3.erase(l3.begin());
//l.erase(beg, end):删除两个迭代器之间的元素,参数均为迭代器
l3.erase(l3.begin(), l3.end());
l3.clear(); //清空
list<int> l4;
for (int i = 0; i < 5; i++) {
l4.push_back(i);
}
l4.push_back(100);
l4.push_back(100);
l4.remove(100); //l.remove(n):删除l中所有值=n的元素
}
数据存取
void list_test_05() {
//数据存取
list<int> l;
for (int i = 0; i < 5; i++) {
l.push_back(i);
}
cout << l.front() << endl; //返回l的首元素
cout << l.back() << endl; //返回l的尾元素
}
反转和排序
void list_test_06() {
//反转和排序
list<int> l1;
for (int i = 0; i < 5; i++) {
l1.push_back(i);
}
l1.reverse(); //反转
list<int> l2;
l2.push_back(3);
l2.push_back(5);
l2.push_back(1);
l2.push_back(4);
l2.push_back(2);
l2.sort(); //排序:从小到大
}