一、创建与初始化
- 引入
<forward_list>
并使用 std 命名空间
cpp
复制代码
#include <forward_list>
using namespace std;
- 创建一个空
forward_list
cpp
复制代码
forward_list<int> fl;
- 创建一个包含 5 个元素,每个元素初始化为 0 的
forward_list
cpp
复制代码
forward_list<int> fl(5);
- 创建一个包含 5 个元素,每个元素初始化为 100 的
forward_list
cpp
复制代码
forward_list<int> fl(5, 100);
- 初始化
forward_list
cpp
复制代码
forward_list<int> fl = { 1, 2, 3 };
二、元素访问
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> fl = { 1, 2, 3 };
int result = fl.front();
cout << "第一个元素:" << result << endl;
return 0;
}
三、容量判断
- 获取
forward_list
是否为空
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> fl = { 10, 20, 30 };
if (fl.empty()) {
cout << "forward_list 是空的" << endl;
}
else {
cout << "forward_list 不为空" << endl;
}
return 0;
}
复制代码
# 输出结果
forward_list 不为空
- 由于没有
size()
方法,需要手动计算
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> fl = { 1, 2, 3, 4, 5 };
size_t count = distance(fl.begin(), fl.end());
cout << "元素数量:" << count << endl;
return 0;
}
复制代码
# 输出结果
元素数量:5
四、元素遍历
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> fl = { 1, 2, 3, 4, 5 };
for (auto it = fl.begin(); it != fl.end(); ++it) {
cout << *it << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
4
5
五、添加元素
- 在头部插入元素
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
my_list.push_front(4);
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----
4
1
2
3
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
my_list.emplace_front(4);
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----
4
1
2
3
- 在指定位置后插入元素
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
// 在第 2 个元素后插入
auto it = my_list.begin();
advance(it, 1);
my_list.insert_after(it, 4);
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----
1
2
4
3
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
// 在第 2 个元素后插入
auto it = my_list.begin();
advance(it, 1);
my_list.emplace_after(it, 4);
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----
1
2
4
3
六、删除元素
- 删除头部元素
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
my_list.pop_front();
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
- 删除指定位置后的元素
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
// 删除第 1 个元素后的元素
auto it = my_list.begin();
my_list.erase_after(it);
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----
1
3
- 清空
forward_list
cpp
复制代码
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> my_list = { 1, 2, 3 };
for (int val : my_list) {
cout << val << endl;
}
cout << "-----" << endl;
my_list.clear();
for (int val : my_list) {
cout << val << endl;
}
return 0;
}
复制代码
# 输出结果
1
2
3
-----