在C++ STL中使用forward_list::front()和forward_list::empty()
STL中的forward list实现了单向链表。从C++11开始引入,与其他容器相比,forward list在插入、移除和移动操作(如排序)方面更加有用,并允许元素的时间常数插入和移除。它与list的不同之处在于,forward list只跟踪下一个元素的位置,而list则跟踪下一个和上一个元素的位置。
forward_list::front()
此函数用于引用forward list容器的第一个元素。此函数可用于获取前向列表的第一个元素。
语法:
forwardlistname.front()
参数:
不需要传递任何值作为参数。
返回值:
容器的第一个元素的直接引用。
示例:
输入:forward_list forwardlist{1, 2, 3, 4, 5};
forwardlist.front();
输出:1
输入:forward_list forwardlist{0, 1, 2, 3, 4, 5};
forwardlist.front();
输出:0
错误和异常
1.如果前向列表容器为空,它会导致不确定的行为。
2.如果前向列表不为空,它具有无异常抛出保证。
// CPP程序实现
// front()函数
#include <forward_list>
#include <iostream>
using namespace std;
int main()
{
forward_list<int> myforwardlist{ 1, 2, 3, 4, 5 };
cout << myforwardlist.front();
return 0;
}
输出:
1
时间复杂度: O(n)
forward_list::empty()
empty()函数用于检查前向列表容器是否为空。
语法:
forwardlistname.empty()
参数:
不传递参数。
返回值:
如果列表为空,则为真,否则为假。
示例:
输入:forward_list forwardlist{1, 2, 3, 4, 5};
forwardlist.empty();
输出:False
输入:forward_list forwardlist{};
forwardlist.empty();
输出:True
错误和异常
1.它具有无异常抛出的保证。
2.当传递参数时会显示错误。
// CPP程序实现
// empty()函数
#include <forward_list>
#include <iostream>
using namespace std;
int main()
{
forward_list<int> myforwardlist{};
if (myforwardlist.empty()) {
cout << "True";
}
else {
cout << "False";
}
return 0;
}
输出:
True
应用- front()和empty(): 给定一个整数列表,求所有整数的和。
输入:1, 5, 6, 3, 9, 2
输出:26
说明- 1+5+6+3+9+2 = 26_
算法:
- 检查forward list是否为空,如果不是则将前面的元素添加到初始化为0的变量中,并弹出前面的元素。
-
重复此步骤,直到前向列表为空。
-
输出变量的最终值。
// CPP程序,说明
// empty()函数的应用
# include <forward_list>
# include <iostream>
using namespace std;
int main()
{
int sum = 0;
forward_list<int> myforwardlist{ 1, 5, 6, 3, 9, 2 };
while(!myforwardlist.empty()) {
sum = sum + myforwardlist.front();
myforwardlist.pop_front();
}
cout << sum;
return 0;
}
输出
26
让我们以表格的形式看看它们之间的差异-:
ID | forward_list :: front() |
forward_list :: empty() |
---|---|---|
1 | 它用于返回forward_list容器中的第一个元素的引用。 | 它用于检查forward_list容器是否为空。 |
2 | 它的语法是-: reference front(); | 它的语法是-:empty(); |
3 | 它不需要任何参数。 | 它不需要任何参数。 |
4 | 它的复杂度为常数。 | 它的复杂度为常数。 |
5 | 它的迭代器有效性不会改变。 | 它的迭代器有效性不会改变。 |