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值匹配的元素

//创建
    listL;
//尾插
	L.push_back(10);
//头插
	L.push_front(100);
//尾删
	L.pop_back();
//头删
	L.pop_front();
//5.insert插入
	L.insert(L.begin(), 1000);
	//也可以利用迭代器
	list::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();//返回最后一个元素

  //创建  
    listL1;

	//尾插
	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::iterator it = L1.begin();
	it++;//支持双向
	it--;
    //it=it+1  如果+1成立,那么等同于可以+2+3+4,也等同于可以跳跃式访问支持随机访问

总结:
*list容器中不可以通过[]或者at方式访问数据
*访问第一个元素 --front
*返回最后一个元素 --back

注:

判断容器类型的方法
++  --  即可判断是否为双向或者为哪种单向
+elem  即可判断是否支持跳跃式访问,可了解是否支持随机访问

3.list 反转和排序

功能描述:
 *将容器中的元素反转,以及将容器中的数据进行排序
函数原型:
reverse();//反转链表
sort();   //链表排序

//创建
	listL1;
	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);使用自己的规则

仅个人看视频笔记与理解,如有误可指出谢谢

你可能感兴趣的:(c++)