📌  相关文章
📜  如何在 C++ STL 中找到 std::forward_list 的大小(1)

📅  最后修改于: 2023-12-03 15:24:08.071000             🧑  作者: Mango

在 C++ STL 中找到 std::forward_list 的大小

在 C++ STL 中,std::forward_list 是一种单向链表容器,它提供了许多常见的链表相关的操作,如插入、删除、遍历等等。然而,在某些情况下,我们需要知道 std::forward_list 的大小,本文将介绍如何在 C++ STL 中找到 std::forward_list 的大小。

方法一:使用 std::distance 函数

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 函数,更加简洁高效;第二种方法则需要手动计数,更具有实现意义。具体采用哪种方法,可以根据具体场景来选择。