C ++中的前向列表和对列表的实例
前向列表
STL中的前向列表实现了单链表。从C ++11开始,前向链表比其他容器更有用,在插入、删除和移动操作(如排序)方面具有时间常数特性,并允许元素的插入和删除。它不同于列表的地方在于,前向列表仅跟踪下一个元素的位置,而列表则跟踪下一个和上一个元素的位置,这增加了存储每个元素所需的存储空间。前向列表的缺点是它无法向后迭代,其单个元素无法直接访问。当只需要进行正向遍历时(与单链表优于双链表时相同),推荐使用前向列表而不是列表,因为我们可以节省空间。一些示例案例包括哈希中的链接,图的邻接表表示等。
使用前向列表的功能:
- push_front(): 这个功能用于在前向列表中在第一个位置插入元素。该函数的值被复制到容器中第一个元素之前的空间。前向列表的大小增加1。
- pop_front(): 这个功能用于删除列表的第一个元素。
列表
列表 是允许非连续内存分配的序列容器。与vector相比,列表的遍历速度较慢,但是一旦找到位置,插入和删除就很快。通常我们说List时,我们使用双链表来实现单链表。
使用列表的功能:
- front(): 返回列表中第一个元素的值。
- back(): 返回列表中最后一个元素的值。
- push_front(x): 在列表开头添加一个新元素‘x’。
- push_back(x): 在列表末尾添加一个新元素’x’。
pair
一个 pair 容器是一个简单的容器,定义在<utility>
头中,由两个数据元素或对象组成。在一对中,第一个对象被称为“first”,第二个对象被称为“second”,并且顺序固定为{first,second}。
语法1:
**forward_list <pair<data_type1, data_type2>> forwardList; **
在这里,
data_type1 和 data_type2 是数据类型。
声明的前向列表可以将对存储为仅包含这些数据类型的元素。
语法2:
**list <pair<data_type1, data_type2>> List; **
在这里,
data_type1 和 data_type2 是数据类型。
声明的列表可以将对存储为仅包含这些数据类型的元素。
pair的前向列表
以下是一对列表的实现:
例1:
输出
示例 2:
输出
键值对列表
下面是一个键值对列表的实现方法:
示例1:
输出
示例2:
输出结果