C++ STL中的链表:使用list容器进行链表操作
发布时间: 2023-12-30 16:42:25 阅读量: 60 订阅数: 30
# 第一章:介绍STL和list容器
## 1.1 STL简介
STL(Standard Template Library,标准模板库)是C++标准库的一部分,它包含了大量的模板类和函数,用于实现常用的数据结构和算法。STL的设计目标是提供一套高效、灵活、可复用的工具,使得编程变得更加简洁和高效。
## 1.2 list容器概述
list是STL中的双向链表容器,它允许在list的任意位置直接插入和删除元素,而不会造成其他元素的移动。list容器具有动态大小,因此在插入和删除操作上具有较好的性能。
## 1.3 list容器与传统链表的对比
传统链表需要手动编写代码来实现插入、删除等操作,而list容器封装了这些操作,使得代码更加简洁易读。此外,list容器还提供了丰富的成员函数和算法,使得链表操作更加方便和高效。
第二章:list容器的基本操作
2.1 创建和初始化list容器
在C语言中,使用STL的list容器需要包含头文件`<list>`。下面是创建一个list容器并初始化的示例代码:
```c++
#include <iostream>
#include <list>
int main() {
// 创建一个空的list容器
std::list<int> myList;
// 初始化list容器
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
myList.push_back(4);
// 遍历并打印list容器中的元素
std::cout << "List container elements: ";
for (const auto& num : myList) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
代码解释:
- 首先,我们包含了`<iostream>`和`<list>`头文件。
- 然后,我们创建了一个空的list容器`myList`,并使用`push_back()`函数向其尾部插入了一些元素。
- 最后,我们使用循环遍历list容器中的元素,并打印输出。
运行结果:
```
List container elements: 1 2 3 4
```
2.2 向list容器中插入和删除元素
list容器提供了一些方法来在指定位置插入和删除元素。下面是一些常用的操作示例代码:
```c++
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
// 在指定位置插入元素
auto it = std::next(myList.begin(), 2);
myList.insert(it, 6);
// 删除指定位置的元素
myList.erase(std::next(myList.begin(), 3));
// 遍历并打印list容器中的元素
std::cout << "List container elements: ";
for (const auto& num : myList) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
代码解释:
- 首先,我们创建了一个list容器`myList`,并使用初始化列表插入了一些元素。
- 然后,我们使用`std::next()`函数获取到指定位置的迭代器,并使用`insert()`函数在该位置插入一个新元素。
- 接着,我们使用`erase()`函数删除指定位置的元素。
- 最后,我们使用循环遍历list容器中的元素,并打印输出。
运行结果:
```
List container elements: 1 2 6 4 5
```
2.3 遍历list容器
遍历list容器可以使用迭代器,也可以使用范围`for`循环。下面是使用迭代器和范围`for`循环遍历list容器的示例代码:
```c++
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
// 使用迭代器遍历list容器
std::cout << "Using iterator: ";
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 使用范围for循环遍历list容器
std::cout << "Using range for loop: ";
for (const auto& num : myList) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
代码解释:
- 首先,我们创建了一个list容器`myList`,并使用初始化列表插入了一些元素。
- 然后,我们使用迭代器进行遍历,从容器的`begin()`位置开始迭代,直到`end()`位置结束。
- 接着,我们使用范围`for`循环对list容器进行遍历,将每个元素赋值给变量`num`。
- 最后,我们分别使用迭代器和范围`for`循环打印输出list容器中的元素。
运行结果:
```
Using iterator:
```
0
0