📅  最后修改于: 2023-12-03 14:51:14.945000             🧑  作者: Mango
在C++的STL(标准模板库)中,cbegin()和cend()函数是两个非常有用的函数,它们可以让我们在不修改容器的情况下对其进行遍历操作。这对于保证代码的稳健性和安全性非常重要。
cbegin()函数可以返回一个指向容器第一个元素的常迭代器。该迭代器可以用于遍历容器,但不能修改容器中的元素。其函数原型如下:
const_iterator cbegin() const noexcept;
其中,const_iterator是一个指向容器中元素的常迭代器类型,noexcept表示该函数不抛出异常。
下面是一个简单的示例:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.cbegin(); it != vec.cend(); ++it) {
std::cout << *it << " ";
}
return 0;
}
该程序遍历了一个std::vector容器中的元素,并输出它们的值。需要注意的是,迭代器it是一个指向常量的迭代器,因此不能修改vec中的元素。
cend()函数可以返回一个指向容器中最后一个元素后面的位置的常迭代器。该迭代器可以用于遍历容器,但不能修改容器中的元素。其函数原型如下:
const_iterator cend() const noexcept;
接下来,还是以std::vector为例,展示cend()函数的使用方法:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = vec.cbegin(); it != vec.cend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
for (auto it = vec.crbegin(); it != vec.crend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
该程序遍历了一个std::vector中的元素,并输出它们的值。需要注意的是,迭代器it是一个指向常量的迭代器,因此不能修改vec中的元素。
cbegin()和cend()函数可以让我们在不修改容器的情况下对其进行遍历操作,以确保代码的稳健性和安全性。这两个函数在STL中的使用非常普遍,熟练掌握它们的语法和用法是每个C++程序员的必备技能。