📅  最后修改于: 2023-12-03 15:37:34.542000             🧑  作者: Mango
在C++ STL中,cbegin()和cend()函数用于返回指向容器(如vector、list、array等)中第一个和最后一个元素的常量指针。这两个函数主要用于遍历const容器。
cbegin函数的定义如下:
template <typename C>
auto cbegin(const C& c) -> decltype(std::begin(c));
其中,C表示容器类型,c表示对应的容器对象。该函数返回一个指向容器首个元素的常量指针。
cend函数的定义如下:
template <typename C>
auto cend(const C& c) -> decltype(std::end(c));
该函数返回一个指向容器最后一个元素“下一个”位置(即end())的常量指针。
下面是一个使用cbegin()和cend()函数的示例代码,通过遍历容器中的元素,计算其总和。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 计算容器中所有元素的总和
int sum = 0;
for (auto itr = std::cbegin(nums); itr != std::cend(nums); ++itr) {
sum += *itr;
}
std::cout << "Total sum is " << sum << std::endl;
return 0;
}
输出:
Total sum is 15
由于cbegin()和cend()函数返回的是常量指针,因此无法使用其返回值来修改容器中的元素。如果需要修改元素,应该使用begin()和end()函数。此外,在使用cbegin()和cend()函数时,应确保容器对象本身是一个const对象或者其类型为const_iterator或const_reverse_iterator。