C++ STL中的deque::begin() 和deque::end

C++ STL中的deque::begin() 和deque::end

C++ STL中,deque是一种可以在两端添加和删除元素的容器。在实际使用deque时,我们可能需要遍历deque中的元素以进行操作。C++ STL提供了两个成员函数:begin()end()来返回deque的迭代器,以便我们可以使用循环来遍历它们。

deque::begin()

begin()函数返回指向deque第一个元素的迭代器,可以使用这个迭代器遍历整个deque。下面是一个示例代码:

#include <deque>
#include <iostream>

int main()
{
    std::deque<int> d = {1, 2, 3, 4, 5};

    // 遍历deque中的元素并打印
    for(auto it = d.begin(); it != d.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

在上面的代码中,我们定义了一个包含5个int类型元素的deque。我们可以使用begin()函数返回指向第一个元素的迭代器,并在循环中遍历deque中的所有元素。输出将是:1 2 3 4 5。

deque::end()

end()函数返回指向deque中最后一个元素之后位置的迭代器。这个迭代器不指向任何元素,它可以被认为是指向deque末尾的哨兵。下面是一个示例代码:

#include <deque>
#include <iostream>

int main()
{
    std::deque<int> d = {1, 2, 3, 4, 5};

    // 遍历deque中的元素并打印
    for(auto it = d.begin(); it != d.end(); ++it) {
        std::cout << *it << " ";
    }

    // 插入一个元素到deque中
    d.insert(d.end(), 6);

    // 再次遍历deque中的元素并打印
    for(auto it = d.begin(); it != d.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

在上面的代码中,我们先使用begin()函数遍历deque中所有元素并打印。然后,我们使用insert()函数在deque的末尾插入了一个新元素6。最后,我们再次使用begin()end()函数来遍历deque并打印所有元素,包括新增的元素6。输出将是:1 2 3 4 5 6。

需要注意的一点是,当使用end()函数遍历deque时,我们通常不会使用它来访问元素,因为它不指向任何元素。它只用于遍历整个deque。

其他迭代器

在deque中,还有其他迭代器可用,例如rbegin()rend()。这两个函数分别返回一个逆序迭代器,指向最后一个元素和第一个元素之前的位置。可以在需要从后向前进行遍历时使用这些逆序迭代器。

下面是一个示例代码,使用rbegin()rend()逆向遍历deque中的元素:

#include <deque>
#include <iostream>

int main()
{
    std::deque<int> d = {1, 2, 3, 4, 5};

    // 使用rbegin()和rend()逆向遍历deque中的元素并打印
    for(auto it = d.rbegin(); it != d.rend(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

输出将是:5 4 3 2 1。

结论

在C++ STL中,deque提供了两个成员函数begin()end(),用于获取deque的正向迭代器,可用于遍历deque中的所有元素。需要注意的是,end()所返回的迭代器并不指向任何元素,只是作为一个哨兵迭代器存在。

此外,deque还提供了rbegin()rend()成员函数,用于获取逆向迭代器,可供从后向前遍历deque中的元素。

使用这些成员函数,我们可以方便地访问和操作deque中的所有元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程