C++中使用STL list 和find函数

本文详细解析了C++ STL中的find函数如何在list容器中查找特定元素的位置,以及如何结合find函数进行元素的插入和删除操作。同时介绍了list容器特有的操作,如push_front、push_back、remove等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先find的作用:在具有指定值的范围内找到元素首次出现的位置。

template<class InputIterator, class Type>
InputIterator find(
InputIterator _First, //一个输入迭代器,它在要搜索指定值的范围内寻址第一个元素的位置。
InputIterator _Last, //一个输入迭代器,用于在要搜索的指定值范围内的最后一个元素之后的位置进行寻址。
const Type& _Val//要搜索的值。
);

返回值:一个输入迭代器,用于寻址在搜索范围内首次出现的指定值。 如果范围中不存在此类值,则返回的迭代器将寻址范围的最后位置,即最后一个元素之后的位置。

使用前需要引入头文件#include <algorithm>

如:
#include<algorithm>
#include<list>

list lst;

list< int>::iterator itePos = ::find(lst.begin(),lst.end(),5);//寻找值为5的元素位置。


STL list 是一个双向链表,迭代器具备前移和后移的能力
1.以下操作同vector
List< int> list;
Ilist.push_back(0);
Ilist.begin();
Ilist.end();
Ilist.insert();
Ilist.erase();
Ilist.clear();
2.以下为list 的特有操作
(1)Void push_front(const T &x); //插入一个结点,作为头结点
(2)Void push_back(const T &x); //插入一个结点,作为尾结点
(3)Void pop_front(); //移除头结点
(4)Void pop_back(); //移除尾结点
(5)Void remove(const T&value); //将数值为value的所有元素移除
(6)Void unique(); //将“连续而相同的元素”移除只剩一个
(7)Void splice(iterator position, list &x); //将x 结合于position所指位置之前。X 必须不同于*this

(8)Void splice(iterator position, list&, iterator i); //将i所指的元素结合于position所指位置之前。Position 和 i 可指向同一个list
(9)Void splice(iterator position, list&, iterator first, iterator lsat); //将[first, last)内的所有元素结合于 position 所指的位置之前,position和[first, last)可指向同一个list,但是position 不能位于[first, last)之内。
(10)void merge(list& x); //将x合并到*this 身上。两个lists 的内容都必须先经过递增排序。

(11)void reverse(); //将*this 的内容逆向重置
(12)void sort(); //将list 的元素进行升序排序

我们结合find函数进行指定位置的添加和删除
list< int>::iterator itePos = ::find(lst.begin(),lst.end(),5);//在list中寻找值为5的元素位置。
lst.insert(itePos,100);//默认在元素5的前面插入100.

list< int>::iterator itePos = ::find(lst.begin(),lst.end(),1);//在list中寻找值为1的元素位置。
itePos = lst.erase(itePos);//删除元素1,并返回元素1的下一个元素位置。注:迭代器被删除后需要重新赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值