写点什么

stl 中,cbegin,cend,crbegin,crend 区别以及用途

作者:linux大本营
  • 2023-04-22
    湖南
  • 本文字数:509 字

    阅读完需:约 2 分钟

cbegin 和 cend 是用于容器的,它们返回指向容器中第一个元素和最后一个元素的 const 迭代器,因此不能修改其指向的值。


例如:


std::vector<int> v{1,2,3};for(auto it = v.cbegin(); it != v.cend(); ++it){    std::cout << *it << " ";}
复制代码


这个例子中,cbegin 返回 v 的第一个元素的 const 迭代器,cend 返回 v 末尾元素之后的位置的 const 迭代器(类似于 end),在循环中遍历了整个容器,输出了元素 1、2、3。


crbegin 和 crend 同样是用于容器的,但它们返回指向容器中倒数第一个元素和第一个元素之前位置的 const 反向迭代器,因此可以从尾部向头部遍历容器元素。同样,这些迭代器也不能修改其指向的值。


例如:


std::vector<int> v{1,2,3};for(auto it = v.crbegin(); it != v.crend(); ++it){    std::cout << *it << " ";}
复制代码


这个例子中,crbegin 返回 v 的最后一个元素的 const 反向迭代器,crend 返回 v 第一个元素之前位置的 const 反向迭代器(类似于 rbegin),在循环中逆序遍历了整个容器,输出了元素 3、2、1。


使用 const 迭代器和 const 反向迭代器可以保证遍历容器时不会修改其中的元素值,从而提高代码的安全性。


相关技术视频教程:https://ke.qq.com/course/417774?flowToken=1013300

c/c++后端技术交流群:812855908

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
stl中,cbegin,cend,crbegin,crend区别以及用途_容器_linux大本营_InfoQ写作社区