上见【c++】 list容器 (一)-CSDN博客
一、list插入与删除
1.头尾之间的插入或删除
尾插 push_back 尾删 pop_back 头插 push_front 头删 pop_front
L.push_back(10);
L.push_back(20);
L.push_back(30);
L.push_front(1);
L.push_front(2);
L.push_front(3);
print(L);
L.pop_back();
L.pop_front();
2.insert 插入
L.insert(L.begin(), 1000); //相当于头插
我们还可以选择位置 (通过改变迭代器的位置)
list <int>::iterator it = L.begin();
L.insert(++it, 100);
3.erase 删除
it = L.begin();
L.erase(++it);
4.remove 移除
这个是 list 与其他容器不同的一点
L.push_back(1000);
//直接删除所有1000的数据
L.remove(1000);
remove删除1000是 删除一个1000 还是删除所有的1000呢?
通过实践发现是删除所有是1000的数据
二、数据存取
list 不支持通过 [ ] 或者直接用at访问
因为list本身是链表,非连续的空间,只能前移或者后移,不能跳跃式的访问
1.front () 返回第一个元素
cout << "第一个元素是:" << L.front () << endl;
2.back() 返回最后一个元素
cout << "最后一个元素是:" << L.back() << endl;
三、反转和排序
1.reverse 反转
reverse () 反转链表
L.reverse();
2.swap 排序 (升序和降序)
L.sort();
!!!:注意不能用: sort ( L.begin( ) , L.end( ) )
所有不支持随机访问迭代器的容器,不可以使用标准算法的函数
上面是实现升序排列的方法,那我们该如何实现降序排列呢?
我们可以先写一个bool类型的函数
bool compare(int v1, int v2)
{
//降序 就让返回值大于零
return v1 >v2;
}
再把compare这个函数名放到sort算法里面
L.sort(compare);