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;


}

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

相关推荐
W说编程2 小时前
算法导论第一章:算法基础与排序艺术
c语言·数据结构·算法
titan TV man2 小时前
上海市计算机学会竞赛平台2022年5月月赛丙组最远城市距离
数据结构·算法
云边小网安2 小时前
分析 java 的 Map<String,Map<String, List<Map<String,Integer>>>>
java·开发语言·list
慢半拍iii10 小时前
数据结构——D/串
c语言·开发语言·数据结构·c++
怀旧,10 小时前
【数据结构】5. 双向链表
数据结构·windows·链表
会不再投降21910 小时前
《算法复杂度:数据结构世界里的“速度与激情”》
数据结构·算法
vvilkim10 小时前
深入解析 Pandas 核心数据结构:Series 与 DataFrame
数据结构·pandas
Frankabcdefgh11 小时前
Python基础数据类型与运算符全面解析
开发语言·数据结构·python·面试
wangjialelele12 小时前
动态内存管理之柔性数组
数据结构·算法
南枝异客12 小时前
三数之和-力扣
开发语言·javascript·数据结构·算法·leetcode·排序算法