📜  C++ STL中的vector :: cbegin()和vector :: cend()(1)

📅  最后修改于: 2023-12-03 14:39:52.812000             🧑  作者: Mango

C++ STL中的vector :: cbegin()和vector :: cend()
介绍

C++ STL(Standard Library)是C++标准库中提供的一套通用的、高效的、可重用的数据结构和算法集合,其中包括vector容器。vector是一种线性数据结构,它基于动态数组实现,支持随机访问、在尾部快速添加和删除元素、动态扩容、自动内存管理等特性。

vector容器提供了两个方法 cbegin() 和 cend(),用于返回一个指向vector容器中第一个元素和最后一个元素后面位置的const迭代器,可以用于遍历容器中的元素。

语法
vector<T>::const_iterator cbegin() const;
vector<T>::const_iterator cend() const;

其中,T表示vector容器所存储元素的数据类型,const_iterator是迭代器类型,这里返回的是指向常量元素的迭代器,即只能读取vector容器中的元素,不能修改。

示例
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {1, 2, 3, 4, 5};
    cout << "使用cbegin和cend遍历vector: ";
    for (auto it = v.cbegin(); it != v.cend(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
    cout << "使用const auto&遍历vector:   ";
    for (const auto& x : v) {
        cout << x << " ";
    }
    cout << endl;
    return 0;
}

这段代码定义了一个包含5个整数的vector容器v,然后分别使用cbegin和cend方法遍历v容器中的元素,并输出到标准输出流。同时,还使用C++11中的foreach语法(const auto& x : v)遍历容器,用于简化代码,提高可读性。

输出结果为:

使用cbegin和cend遍历vector: 1 2 3 4 5 
使用const auto&遍历vector:   1 2 3 4 5 

可以看到,两种遍历方法都正确地输出了vector容器中的元素。

注意事项
  • 由于cbegin和cend方法返回的是const类型的迭代器,所以无法对元素进行修改,只能读取。
  • 如果需要在遍历容器时修改元素,可以使用begin和end方法等返回的迭代器进行遍历,并使用*运算符来获得指向元素的引用,从而进行修改。但是需要注意,如果容器为空时,调用begin和end方法会返回同一位置的迭代器,因此需要特别注意边界情况。