如何在C++ STL中查找std :: forward_list的大小
C++ STL是一种非常强大的编程工具,它包含了许多容器,其中之一是std :: forward_list。std :: forward_list提供了一种单向链表的实现方式。但是,在某些情况下,我们需要知道std :: forward_list的大小。那么,在C++ STL中如何查找std :: forward_list的大小呢?
使用std :: distance函数
std :: distance函数是一个非常有用的函数,用于计算两个迭代器之间的距离。对于std :: forward_list,我们可以将它的begin()和end()迭代器传递给std :: distance函数,将返回std :: forward_list的大小。下面是示例代码:
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> myList{1, 2, 3, 4, 5};
cout << "The size of my forward_list is: " << distance(myList.begin(), myList.end()) << endl;
return 0;
}
输出:
The size of my forward_list is: 5
解释
在这段代码中,我们首先定义了一个名为myList的std :: forward_list对象,并将一些值添加到列表中。然后,我们使用std :: distance函数来计算myList的大小。最后,我们打印出std :: forward_list的大小。
手动计数
std :: forward_list没有提供像std :: vector和std :: deque那样的.size()函数。因此,我们需要手动计算std :: forward_list的大小。我们可以使用std :: forward_list的迭代器并遍历整个列表,直到我们到达end()迭代器(标记列表的结尾)。每次遍历时,我们可以增加一个计数器,以便最后知道std :: forward_list的大小。下面是示例代码:
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
forward_list<int> myList{1, 2, 3, 4, 5};
int count = 0;
for (auto itr = myList.begin(); itr != myList.end(); ++itr) {
++count;
}
cout << "The size of my forward_list is: " << count << endl;
return 0;
}
输出:
The size of my forward_list is: 5
解释
在这段代码中,我们首先定义了一个std :: forward_list对象,并将一些值添加到列表中。然后,我们定义一个名为count的计数器变量,并使用for循环遍历整个std :: forward_list。在每次循环中,我们将计数器加1,以便在循环结束时知道std :: forward_list的大小。最后,我们打印出std :: forward_list的大小。
结论
在C++ STL中,我们可以使用std :: distance函数或手动遍历std :: forward_list来查找std :: forward_list的大小。尽管std :: forward_list没有提供.size()函数,但是这些方法都可以解决这个问题。