📜  在C++ STL中设置crbegin()和crend()函数(1)

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

在C++ STL中设置crbegin()和crend()函数

在C++的STL中,crbegin()和crend()函数是一对用于获取const反向迭代器的函数。通过这对函数,我们可以轻松遍历一个容器的元素,而不需要访问或者修改它们的值。

crbegin()函数

crbegin()函数返回一个const反向迭代器,它指向容器的最后一个元素。在使用crbegin()函数之前,我们需要首先定义一个容器对象。

std::vector<int> vec{1,2,3,4,5};
auto iter = vec.crbegin();

在上面的代码中,我们定义了一个std::vector容器,并使用crbegin()函数获取了一个指向该容器最后一个元素的const反向迭代器。由于反向迭代器的特殊性,我们需要使用auto关键字来自动推导出迭代器的类型。

// 使用迭代器访问容器的每个元素
while(iter != vec.crend()) {
  std::cout << *iter << " ";
  ++iter;
}

上面的代码中,我们使用while循环遍历了整个容器,并输出了每个元素的值。可以发现,我们并没有改变容器中的元素值。

crend()函数

crend()函数返回一个const反向迭代器,它指向容器的第一个元素之前的位置。和crbegin()函数类似,我们需要首先定义一个容器对象,并使用crend()函数获取一个指向容器第一个元素之前的位置的const反向迭代器。

std::vector<int> vec{1,2,3,4,5};
auto iter_end = vec.crend();

在上面的代码中,我们使用crend()函数获取了一个指向容器第一个元素之前的位置的const反向迭代器。和crbegin()函数类似,由于迭代器的特殊性,我们需要使用auto关键字自动推导出迭代器的类型。

// 使用迭代器访问容器的每个元素
auto iter = vec.crbegin();
while(iter != iter_end) {
  std::cout << *iter << " ";
  ++iter;
}

在上面的代码中,我们使用while循环遍历了整个容器,并输出了每个元素的值。可以发现,我们在遍历容器时,完全没有修改其中任何一个元素的值。

总结

在C++ STL中,crbegin()和crend()函数是一对用于获取const反向迭代器的函数。由于反向迭代器的特殊性,我们需要使用auto关键字自动推导出迭代器的类型。在遍历容器中的元素时,使用这对函数可以更加方便地读取修改每个元素的值。