list容器的一些常见用法:
1.在list的开头或者末尾添加一个元素
list<int> ls;
ls.push_front(8);
ls.push_back(7);
ls.emplace_front(8);
ls.emplace_back(7);
2.在list中插入元素
list<int> ls = {1, 2};
(1)在开头或末尾插入
ls.insert(ls.begin(), 6);
ls.insert(ls.begin(), 3, 7);
ls.insert(ls.end(), 10);
ls.insert(ls.end(), 4, 9);
(2)在中间某个位置插入[使用迭代器进行操作]
list<int>::iterator it1 = ls.begin(), it2 = ls.begin();
advance(it1, 4);
ls.insert(it1, 8);
advance(it2, 6);
ls.insert(it2, 5, 0);
3.删除list的开头第一个元素或末尾最后一个元素
ls.pop_front();
ls.pop_back();
4.删除list某一指定位置元素
(1)删除开头的元素
ls.erase(ls.begin());
(2)删除末尾的元素
ls.erase(ls.end());
(3)使用迭代器删除中间某个位置的元素
list<int>::iterator it = v.begin();
advance(it,3);
ls.erase(it);
5.list删除某个范围内的元素
list<int> ls = {1, 2, 3, 4, 5, 6, 7, 8, 9};
list<int>::iterator it1 = ls.begin(), it2 = ls.begin();
advance(it1, 1), advance(it2, 4);
ls.erase(it1, it2);
6.list删除某一指定值元素
ls.erase(remove(ls.begin(), ls.end(), 0), ls.end());
7.清空整个list
ls.clear();
8.判断list是否为空
ls.empty();
9.list中查找某一元素
list<int> ls = {1, 2, 3, 4, 5};
list<int>::iterator it = find(ls.begin(), ls.end(), 6);
if (it != ls.end()) cout << "Yes";
else cout << "No";
10.对list进行排序
ls.sort();
ls.sort(greater<int>());
ls.sort(cmp);
11.对list进行逆置
ls.reverse();
reverse(ls.begin(), ls.end());
12.对list进行遍历
list<int> ls = {2, 3, 1, 5, 4};
list<int>::iterator it;
for (it = ls.begin(); it != ls.end(); it++) cout << *it << " ";
for (it = ls.end(); it != ls.begin(); ) cout << *(--it) << " ";
list<int>::reverse_iterator it;
for (it = ls.rbegin(); it != ls.rend(); it++) cout << *it << " ";
13.交换两个list
ls1.swap(ls2);
swap(ls1, ls2);
14.将两个无序list合并为一个有序list
方法(1)
ls1.sort(), ls2.sort();
ls1.merge(ls2);
方法(2)
ls1.merge(ls2);
ls1.sort();