📜  在C++ STL中列出cbegin()和cend()函数(1)

📅  最后修改于: 2023-12-03 15:37:34.542000             🧑  作者: Mango

C++ STL中的cbegin()和cend()函数

在C++ STL中,cbegin()和cend()函数用于返回指向容器(如vector、list、array等)中第一个和最后一个元素的常量指针。这两个函数主要用于遍历const容器。

cbegin函数

cbegin函数的定义如下:

template <typename C>
auto cbegin(const C& c) -> decltype(std::begin(c));

其中,C表示容器类型,c表示对应的容器对象。该函数返回一个指向容器首个元素的常量指针。

cend函数

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。