社交模板网站建设,wordpress网站聊天插件,微同步网站,成为软件工程师的条件目录
list定义和结构
list容器模板接受两个参数#xff1a;
list容器的特点
双向性
动态大小
不连续存储
实例
代码输出
需要注意的点
list常用函数
代码示例 list定义和结构
list的使用频率不高#xff0c;在做题时极少遇到需要使用list的情景。
list是一种双向…目录
list定义和结构
list容器模板接受两个参数
list容器的特点
双向性
动态大小
不连续存储
实例
代码输出
需要注意的点
list常用函数
代码示例 list定义和结构
list的使用频率不高在做题时极少遇到需要使用list的情景。
list是一种双向链表容器他是标准模板库STL提供的一种序列容器。list容器以节点node的形式存储元素并使用指针将这些节点链接在一起形成一个链表结构。
list容器的定义和结构如下
templateclass T,class Allocator std::allocatorT
class list;
list容器模板接受两个参数
1.T指定容器中存储的元素类型。
2.Allocator可选指定用于分配内存的分配器类型默认为std::allocatorT。
list容器的特点
双向性
每个节点都包含指向前一个节点和后一个节点的指针因此可以在常数时间内在链表中的任意位置进行插入、删除和访问操作。
动态大小
链表的大小可以根据需要动态扩展或收缩不需要预先指定容器的大小。
不连续存储
链表的节点可以在内存中的任意位置分布不要求连续存储因此插入和删除操作不会导致元素的移动。
list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素包括插入、删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。
实例
#includeiostream
#includelist
using namespace std;
int main()
{listintmyList;//在链表尾部插入元素myList.push_back(1);myList.push_back(2);myList.push_back(3);//在链表头部插入元素myList.push_front(0);//遍历链表并输出元素for (int num : myList){cout num ;}cout endl;
}
代码输出 需要注意的点
由于list是双向链表因此插入和删除操作的时间复杂度是常量时间O(1)但访问和查找操作的时间复杂度为O(n)其中n是链表的大小。因此如果需要频繁进行随机访问操作可能更适合使用支持随机访问的容器如vector或deque。
list常用函数
1、push_back():将元素插入到链表的末尾
2、push_front():将元素插入到链表的开头
3、pop_back():移除链表末尾的元素
4、pop_front():移除链表开头的元素
5、size():返回链表中的元素个数
6、empty():检查链表是否为空
7、clear():清空链表中的所有元素
8、front():返回链表中第一个元素的引用
9、back():返回链表中最后一个元素的引用
10、begin():返回指向链表第一个元素的迭代器
11、end():返回指向链表最后一个元素的迭代器
12、insert():在指定位置之前插入一个或多个元素
13、erease():从链表中移除指定位置的一个或多个元素
代码示例
#includeiostream
#includelist
using namespace std;
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//创建一个listint对象myListlistintmyList;//向myList尾部添加元素for (int i 1; i 5; i){myList.push_back(i);}//从头到尾输出myList中的元素for (const auto i : myList){cout i ;}cout endl;//将myList中的元素反转reverse(myList.begin(), myList.end());for (const auto i : myList){cout i ;}cout endl;//在第一个元素的后一个位置加上元素0myList.insert(myList.begin(), 0);for (const auto i : myList){cout i ;}cout endl;myList.erase(myList.begin(), --myList.end());cout 链表的大小为 myList.size() endl;for(const auto i:myList){cout i ;}return 0;
}
输出结果