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中的所有元素。