C++——list容器的插入,删除,数据存取与反转和排序
1.list 插入和删除
功能描述:
对list容器进行数据的插入和删除
函数原型:
1.push_back(elem); //在容器尾部加入一个元素
2.pop_back0; //删除容器中最后一个元素
3.push_front(elem); //在容器开头插入一个元素
4.pop_front(); //从容器开头移除第一个元素
5.insert(pos,elem); //在pos位置插elem元素的拷贝,返回新数据的位置
6.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值.
7.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值.
8.clear(); //移除容器的所有数据
9.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置
10.erase(pos); //删除pos位置的数据,返回下一个数据的位置
11.remove(elem); //删除容器中所有与elem值匹配的元素
//创建list<int>L;
//尾插L.push_back(10);
//头插L.push_front(100);
//尾删L.pop_back();
//头删L.pop_front();
//5.insert插入L.insert(L.begin(), 1000);//也可以利用迭代器list<int>::iterator it = L.begin();L.insert(++it, 1000);//++是让迭代器往后移动
//10.删除it = L.begin();L.erase(++it);//L.erase(it);
//11.删除容器中所有与elem值匹配的元素。L.remove(10000);
总结:
*尾插 --push_back
*尾删 --pop_back
*头插 --push_front
*头删 --pop_front
*插入 --insert
*删除 --erase
*移除 --remove
*清空 --clear
2.list 数据存取
功能描述:
对list容中数据进行存取
函数原型:
front();//返回第一个元素
back();//返回最后一个元素
//创建 list<int>L1;//尾插L1.push_back(10);L1.push_back(20);//L1[0]不可以用[]访问list容器中的元素//L1.at(0) 不可以用at方式访问list容器中的元素//原因是list本质链表,不是用连续线性空间存储数据,迭代器也是不支持随机访问的//但是可以利用++实现访问cout << "第一个元素为: " << L1.front() << endl;cout << "最后一个元素为:" << L1.back() << endl;//验证迭代器是不支持随机访问的list<int>::iterator it = L1.begin();it++;//支持双向it--;//it=it+1 如果+1成立,那么等同于可以+2+3+4,也等同于可以跳跃式访问支持随机访问
总结:
*list容器中不可以通过[]或者at方式访问数据
*访问第一个元素 --front
*返回最后一个元素 --back
注:
判断容器类型的方法
++ -- 即可判断是否为双向或者为哪种单向
+elem 即可判断是否支持跳跃式访问,可了解是否支持随机访问
3.list 反转和排序
功能描述:
*将容器中的元素反转,以及将容器中的数据进行排序
函数原型:
reverse();//反转链表
sort(); //链表排序
//创建list<int>L1;L1.push_back(20);L1.push_back(10);
//反转L1.reverse();bool myCompare(int v1,int v2)
{//降序 就让第一个数>第二个数return v1 > v2;}
//所有不支持随机访问迭代器,不可以用标准算法//不支持随机访问迭代器的容器,内部会提供对应一些算法//sort(L1.begin(), L1.end());//会报错L1.sort();//成员函数 默认排序规则 从小到大 升序L1.sort(myCompare);使用自己的规则
仅个人看视频笔记与理解,如有误可指出谢谢