📅  最后修改于: 2023-12-03 15:00:03.015000             🧑  作者: Mango
在 C++ 中,有两个特定的函数 end()
和 cend()
,它们都用于返回容器的尾迭代器。它们的不同之处在于 end()
返回一个常规迭代器(iterator),而 cend()
返回一个常量迭代器(const_iterator)。
在 C++ 中,迭代器是一种对象,它在容器内部遍历元素。可以将迭代器想象成指向容器内元素的指针。利用迭代器,我们可以访问和修改容器中的元素。所有标准库容器(例如向量,列表和映射)都有迭代器,使我们可以遍历容器中存储的元素。
end()
函数用于返回容器的尾部迭代器(指向容器中最后一个元素后面的位置)。例如,如果我们有一个向量,并且想要遍历它,可以使用 begin()
和 end()
函数来访问向量中的每个元素。
下面是一个示例,展示如何遍历一个向量:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> myVector {1, 2, 3, 4, 5};
// 使用迭代器访问每个元素
for (auto it = myVector.begin(); it != myVector.end(); ++it)
{
std::cout << *it << " ";
}
return 0;
}
输出结果:
1 2 3 4 5
在上面的示例中,我们使用 begin()
和 end()
函数来遍历向量中的每个元素。注意,我们使用了自增运算符来递增迭代器。
cend()
函数与 end()
函数非常相似,因为它也返回尾迭代器。但是,与 end()
函数不同的是,cend()
函数返回常量迭代器(const_iterator)。
常量迭代器是指不能用于修改容器中的元素的迭代器。它只能用于访问容器中的元素。这是因为常量迭代器指向的是常量数据,而 const 让我们不能对其进行任何修改。
下面是一个示例,展示如何使用 cend()
函数来遍历一个向量:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> myVector {1, 2, 3, 4, 5};
// 使用迭代器访问每个元素
for (auto it = myVector.begin(); it != myVector.cend(); ++it)
{
std::cout << *it << " ";
}
return 0;
}
输出结果:
1 2 3 4 5
在上面的示例中,我们使用了 cend()
函数来遍历向量中的每个元素。我们可以看到,我们仍然可以访问元素,但不能修改它们。
使用 end()
和 cend()
函数遍历容器使代码更加模块化,更具可读性。根据需要使用常规迭代器或常量迭代器,以便在遍历容器时能够进行所需的操作。