当前位置: 首页 > news >正文

C++学习,标准库 <iterator>

C++ 标准库中的 <iterator> 头文件提供了一组工具,用于遍历容器中的元素。迭代器允许以统一的方式访问容器中的元素,而不需要关心容器的具体实现细节。

迭代器是一个对象,它提供了一种方法来遍历容器中的元素。迭代器可以被视为指向容器中元素的指针,但它比指针更加灵活和强大。迭代器可以用于访问、修改容器中的元素,并且可以与 STL 算法一起使用。

 

迭代器分类:

输入迭代器(Input Iterator):进行单次读取操作,不能进行写入操作。
输出迭代器(Output Iterator):进行单次写入操作,不能进行读取操作。
正向迭代器(Forward Iterator):可以进行读取和写入操作,并且可以向前移动。
双向迭代器(Bidirectional Iterator):除了可以进行正向迭代器的所有操作外,还可以向后移动。
随机访问迭代器(Random Access Iterator):除了可以进行双向迭代器的所有操作外,还可以进行随机访问,例如通过下标访问元素。

 

迭代器函数

<iterator> 头文件还定义了一些有用的函数模板和类模板,如:

  • std::distance:计算两个迭代器之间的距离。
  • std::advance:将迭代器向前或向后移动指定数量的位置。
  • std::next:返回一个指向当前迭代器下一个位置的迭代器。
  • std::prev:返回一个指向当前迭代器前一个位置的迭代器。
  • std::iterator_traits:一个模板类,用于提取迭代器类型信息(如类别、值类型等)。

示例:

#include <iostream>  
#include <vector>  
#include <iterator>  
#include <algorithm>  
  
int main() {  
    std::vector<int> vec = {1, 2, 3, 4, 5};  
  
    // 使用 std::ostream_iterator 将 vector 中的元素输出到 std::cout  
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));  
    std::cout << std::endl;  
  
    // 使用 std::reverse_iterator 反转遍历 vector  
    for (auto it = std::rbegin(vec); it != std::rend(vec); ++it) {  
        std::cout << *it << " ";  
    }  
    std::cout << std::endl;  
  
    // 使用 std::distance 计算距离  
    std::cout << "Distance: " << std::distance(vec.begin(), vec.end()) << std::endl;  
  
    return 0;  
}

 


http://www.mrgr.cn/news/50637.html

相关文章:

  • vlan的基础知识
  • 留学生辅导 | 谈谈英国硕士论文如何进行论证
  • 利用vmware在移动硬盘安装Ubuntu2go
  • 大学新生编程学习指南:制定有效计划,开启编程之旅
  • Android14 SystemUI 启动流程(1)
  • Ubuntu里彻底卸载UHD
  • SHA256算法学习
  • MATLAB代码解析:利用DCGAN实现图像数据的生成 全网最细DCGAN设计-训练入门
  • [供应链] 让步接收
  • 安科瑞ARB5弧光保护在船舶中压配电板中的应用-安科瑞黄安南
  • Vue3创建
  • Flutter框架学习计划
  • 一份Python自动化测试学习秘籍,请查收!
  • 真空牛肉滚揉机的优点:
  • 三勾软件/ java+springboot+vue3玖玖云电商ERP多平台源码
  • 如何将AI大模型部署到本地电脑
  • Deeppaas 3.6版本发布,推动零代码开发新纪元
  • 怎样用python获取浏览器的背景颜色?怎样用python把浏览器背景颜色设置为dark?
  • 【jQuery】jQuery基本操作(样式操作 内容操作 节点操作 属性操作 节点遍历)
  • 关于Oracle透明数据加密(TDE)的两个概念