STL之迭代器

匿名 (未验证) 提交于 2019-12-02 23:49:02
迭代器:
    类似于指针类型,迭代器也提供了对对象的间接访问,就迭代器而言,其对象是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素,迭代器有有效和无效之分,这一点和指针差不多
    有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置
    使用迭代器和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员,譬如这些类型都拥有名为begin和end的成员,
    其中begin成员负责返回指向第一个元素(或第一个字符)的迭代器;end成员则负责返回指向容器“尾元素的下一位置”的迭代器,也就是说,
    该迭代器指示的是容器的一个本不存在的“尾后元素”,这样的迭代器没什么意义,仅是个标记而已,表示我们处理完了容器中的所有元素
    end成员返回的迭代器常被称为尾后迭代器或者简称为尾迭代器,特殊情况下,如果容器为空,那么begin和end返回的是同一个迭代器
举例:
  std::vector<int> data;
  data.push_back(1);
  data.push_front(2);
  data.push_back(3);
  data.push_front(4);
  std::vector<int>::iterator iter;
  for (iter = data.begin(); iter != data.end(); iter++)
  {
    int value = *iter;  //  对iter进行解引用
    *iter = 5;  //  也可以对iter进行赋值
  }
C++中STL使用迭代器的原因:
1. 通过迭代器访问容器,可以避免许多错误,同时还能隐藏容器的具体实现
2. 迭代器可以保证对所有容器的基本遍历方式都是一样的,实现算法时若需要遍历,则使用迭代器,则可以不用关注容器的具体类型,实现数据结构和算法的分离。
3. 迭代器本身有很多优点,可以弥补C++的不足,比如它的iterator_category

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!