江西省建设厅教育网站,wordpress 文章菜单,广安seo,周口网络推广公司1.list的定义和结构
list的使用频率不高#xff0c;在做题时几乎遇不到需要使用list的情景。list是一种双向链表容器#xff0c;它是标准模板库(STL)提供的一种序列容器。list容器以节点(node的形式存储元素#xff0c;并使用指针将这些节点链接在一起#xff0c;形成一个…1.list的定义和结构
list的使用频率不高在做题时几乎遇不到需要使用list的情景。list是一种双向链表容器它是标准模板库(STL)提供的一种序列容器。list容器以节点(node的形式存储元素并使用指针将这些节点链接在一起形成一个链表结构。list容器结构如下: list容器模板接受两个参数: 1.T:指定容器中存储的元素类型。 listint 2.Allocator(可选):指定用于分配内存的分配器类型默认为std::allocatorT。 一般不用填
list容器的特点包括:·双向性:每个节点都包含指向前一个节点和后一个节点的指针因此可以在常数时间内在链表中的任意位置进行插入、删除和访问操作。动态大小:链表的大小可以根据需要动态扩展或收缩不需要预先指定容器的大小。
不连续存储:链表中的节点可以在内存中的任意位置分布不要求连续存储因此插入和删除操作不会导致元素的移动。如 1 22 33 35 63… list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素包括插入删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。
#include iostream
#includelist
int main(){std::listint mylist;
// 在链表尾部插入元素myList.push_back(1);myList.push_back(2);myList.push_back(3);
// 在链表头部插入元素myList.push front();
//遍历链表并输出元素for(int num :myList){std::cout num ;}std::cout std::endl;return 0;
}在上述示例中我们首先创建了一个list容器myList然后使用push_back()和push_front()函数分别在链表尾部和头部插入元素。最后使用范围基于范围的for循环遍历链表并输出元素。需要注意的是由于list是双向链表因此插入和删除操作的时间复杂度是常量时间O(1)但访问和查找操作的时间复杂度是线性时间O(n)其中n是链表的大小。因此如果需要频繁进行随机访问操作可能更适合使用支持随机访问的容器如vector或deque(双端队列)
list容器提供了多个常用的成员函数来操作和访问链表中的元素以下是一些常用的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.erase():从链表中移除指定位置的一个或多个元素。
#includebits/stdc.h
using namespace std;
int main(void) {//创建一个listint对象myListlistintmyList;//向myList尾部添加元素for (int i 1; i 5; i)myList.push_back(i);//从头到尾输出myList中的元素for (const auto i : myList)cout i ;cout \n;//将mylist中的元素反转reverse(myList.begin(), myList.end());for (const auto i : myList)cout i ;cout \n;//在第一个元素的后一个位置加上元素0myList.insert(myList.begin(), 0);for (const auto i : myList)cout i ;cout \n;myList.erase(myList.begin(), --myList.end());//输出myList的大小cout 链表大小为: myList.size() \n;//从头到尾输出myList中的元素for (const auto i : myList)cout i ;cout \n;return 0;
}迭代器相当于是一个指针