list使用

list的使用于string的使用都类似,首先通过查阅来看list有哪些函数:

可以看到函数还是蛮多的,我们值重点一些常用的和常见的:

1.关于push_back,push_front,和对应迭代器的使用

cpp 复制代码
//关于push_back和push_front
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);

	lt.push_front(10);
	lt.push_front(20);

	//范围for
	for (auto e : lt)
	{
		cout << e << " ";
	}
	cout << endl;
}

2.关于insert:

cpp 复制代码
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);

	lt.push_front(10);
	lt.push_front(20);

	//insert:
	//第五个位置插入数据:(对应迭代器中无加法迭代,无法直接找到,需要遍历)
	//错误写法:
	//lt.insert(lt.begin()+5, 10);
	//正确:
	auto it = lt.begin();
	/*for (size_t i = 0; i < 5; i++)
	{
		++it;
	}
	lt.insert(it, 10);*/
	
	//具体找到某个数并在其之前插入
	it = find(lt.begin(), lt.end(), 3);
	if (it != lt.end())
	{
		lt.insert(it, 30);

		// insert以后,it不失效
		*it *= 100;
	}
}

对应的insert的使用需要注意的是其不想string一样可以使用迭代器重载的"+"号,因为list是由指针

指向的所以"+"号重载起来只会影响效率,所以我们要使用insert或者erase的时候需要先找到要插

入的地方或者删除的元素才可以顺利插入。

3.关于erase:

cpp 复制代码
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);

	lt.push_front(10);
	lt.push_front(20);

	//erase:
	//同理找到某个具体的数在删除:
	it = find(lt.begin(), lt.end(), 2);
	if (it != lt.end())
	{
		lt.erase(it);
	}
	

	//删除所有偶数
	it = lt.begin();
	while (it != lt.end())
	{
		if (*it % 2 == 0)
		{
			it = lt.erase(it);
		}
		else
		{
			++it;
		}
	}

}

要注意的与insert相同。

4.关于reverse和sort

cpp 复制代码
//reverse,sort
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);

	lt.push_front(10);
	lt.push_front(20);

	for (auto e : lt)
	{
		cout << e << " ";
	}
	cout << endl;

	reverse(lt.begin(), lt.end());

	for (auto e : lt)
	{
		cout << e << " ";
	}
	cout << endl;

	lt.reverse();

	for (auto e : lt)
	{
		cout << e << " ";
	}
	cout << endl;

	lt.sort();
	for (auto e : lt)
	{
		cout << e << " ";
	}
	cout << endl;


}

这些就是对应的需要掌握的并且基础的

相关推荐
violet-lz7 分钟前
数据结构八大排序:归并排序-原理+C语言实现+优化+面试题
c语言·数据结构·排序算法
如竟没有火炬35 分钟前
全排列——交换的思想
开发语言·数据结构·python·算法·leetcode·深度优先
熬了夜的程序员2 小时前
【LeetCode】82. 删除排序链表中的重复元素 II
数据结构·算法·leetcode·链表·职场和发展·矩阵·深度优先
胖咕噜的稞达鸭4 小时前
AVL树手撕,超详细图文详解
c语言·开发语言·数据结构·c++·算法·visual studio
阿林学习计算机5 小时前
红黑树的实现
数据结构
豐儀麟阁贵5 小时前
4.4数组的基本操作
java·开发语言·数据结构·算法
景彡先生5 小时前
Python列表(List)完全指南:从入门到实战优化
windows·python·list
无限进步_5 小时前
【C语言】在矩阵中高效查找数字的算法解析
c语言·开发语言·数据结构·c++·其他·算法·矩阵
Yupureki6 小时前
从零开始的C++学习生活 11:二叉搜索树全面解析
c语言·数据结构·c++·学习·visual studio
草莓工作室6 小时前
数据结构2:线性表1-线性表类型及其特点
c语言·数据结构