1、list的遍历
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
void test_list1()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
list<int>::iterator it = lt.begin();
while (it != lt.end())
{
*it *= 3;
++it;
}
for (const auto& e : lt)
{
cout << e << " ";
}
cout << endl;
}
2、list的头插、头删、尾插、尾删 【其时间复杂度都是:O(1)】
void test_list2()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
for (const auto& e : lt)
{
cout << e << " ";
}
cout << endl;
lt.pop_back();
lt.pop_back();
lt.push_front(1);
lt.push_front(1);
for (const auto& e : lt)
{
cout << e << " ";
}
cout << endl;
lt.pop_front();
lt.pop_front();
for (const auto& e : lt)
{
cout << e << " ";
}
cout << endl;
}
3、find\insert\erase
void test_list3()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
auto pos = find(lt.begin(), lt.end(), 3);
if (pos != lt.end())
{
lt.insert(pos, 30);
lt.insert(pos, 20);
lt.insert(pos, 10);
*pos = 9;
}
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
pos = find(lt.begin(), lt.end(), 4);
if (pos != lt.end())
{
lt.erase(pos);
}
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
}
4、sort:底层用的排序思想是 mergesort【归并排序】
void test_list4()
{
list<int> lt;
lt.push_back(5);
lt.push_back(4);
lt.push_back(3);
lt.push_back(2);
lt.push_back(1);
lt.sort();
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
}
int main()
{
test_list4();
return 0;
}