📅  最后修改于: 2023-12-03 15:24:08.071000             🧑  作者: Mango
在 C++ STL 中,std::forward_list 是一种单向链表容器,它提供了许多常见的链表相关的操作,如插入、删除、遍历等等。然而,在某些情况下,我们需要知道 std::forward_list 的大小,本文将介绍如何在 C++ STL 中找到 std::forward_list 的大小。
std::distance 函数可以计算两个迭代器之间元素的个数,因此可以使用它来计算 std::forward_list 中元素的个数。代码如下:
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
std::forward_list<int> mylist = {1, 2, 3, 4, 5};
int size = std::distance(mylist.begin(), mylist.end());
std::cout << "The size of mylist is: " << size << std::endl;
return 0;
}
输出结果:
The size of mylist is: 5
因为 std::forward_list 是单向链表,所以无法直接遍历到链表的尾节点。因此,我们可以从链表的头节点开始遍历,逐个节点计数直到达到链表的末尾。代码如下:
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
std::forward_list<int> mylist = {1, 2, 3, 4, 5};
int size = 0;
for (auto it = mylist.begin(); it != mylist.end(); ++it) {
++size;
}
std::cout << "The size of mylist is: " << size << std::endl;
return 0;
}
输出结果:
The size of mylist is: 5
以上两种方法都可以用来计算 std::forward_list 的大小,其中第一种方法使用了 STL 提供的 std::distance 函数,更加简洁高效;第二种方法则需要手动计数,更具有实现意义。具体采用哪种方法,可以根据具体场景来选择。