#include<list>
#include<iostream>
using namespace std;
//打印
void PrintList(list<int> mlist) {
for (list<int>::iterator it = mlist.begin(); it != mlist.end(); it++)
cout << *it << " ";
}
//初始化操作
void test01() {
list<int> mlist1; //默认构造
list<int> mlist2(10, 5); //有参构造
list<int> mlist3(mlist2); //拷贝构造
list<int> mlist4(mlist3.begin(), mlist3.end()); //迭代器区间
//打印
PrintList(mlist4);
}
//插入删除
void test02() {
list<int> mlist;
//插入操作
mlist.push_front(10); //头插
mlist.push_back(30);
mlist.push_front(30);
mlist.push_back(20); //尾插
mlist.insert(mlist.begin(), 30);//指定位置插入,相当于头插
mlist.insert(mlist.end(), 40); //相当于尾插
list<int>::iterator it = mlist.begin();
it++;
it++;
mlist.insert(it, 50);
cout << "插入操作后:" << endl;
PrintList(mlist);
//删除操作
mlist.pop_back(); //删除尾部
mlist.pop_front(); //删除头部
mlist.erase(it); //删除指定位置的元素
cout << "\n删除头尾指定位置的元素后:" << endl;
PrintList(mlist);
mlist.push_back(30);
mlist.push_front(30);
mlist.remove(30);
cout << "\n删除所有与给定值相匹配的元素后:" << endl;
PrintList(mlist);
}
//赋值操作
void test03() {
//赋值
list<int> mlist1;
mlist1.assign(10, 10); //赋值
list<int> mlist2;
mlist2 = mlist1;
cout << "mlist2:" << endl;
PrintList(mlist2);
list<int> mlist3;
mlist3.assign(10, 5);
cout << "\nmlist3:" << endl;
PrintList(mlist3);
//交换
mlist2.swap(mlist3);
cout << "\nnew mlist2:" << endl;
PrintList(mlist2);
cout << "\nnew mlist3:" << endl;
PrintList(mlist3);
}
//容器元素反转
void test04() {
list<int> mlist;
for (int i = 0; i < 10; i++)
mlist.push_back(i);
cout << "原来的顺序:" << endl;
PrintList(mlist);
//容器元素反转
mlist.reverse();
cout << "\n现在的顺序:" << endl;
PrintList(mlist);
}
//排序的回调函数
bool mycompare05(int v1, int v2) {
return v1 > v2;
}
//排序方法
void test05() {
list<int> mlist;
mlist.push_back(20);
mlist.push_back(50);
mlist.push_back(10);
mlist.push_back(70);
mlist.push_back(60);
cout << "原来的顺序:" << endl;
PrintList(mlist);
//容器元素排序(默认从小到大)
mlist.sort();
cout << "\n默认排序后的顺序:" << endl;
PrintList(mlist);
//使用加入参数——回调函数后变成从大到小
mlist.sort(mycompare05);
cout << "\n自定义排序后的顺序:" << endl;
PrintList(mlist);
}
//简单测试
int main() {
//test01();
//test02();
//test03();
//test04();
test05();
cout << endl << endl;
return 0;
}
黑马程序员C++提高7——list容器【链表】
最新推荐文章于 2024-01-22 19:52:02 发布