zoukankan      html  css  js  c++  java
  • 《C++ Primer》笔记迭代器iterator

    1.每种容器类型都定义了自己的迭代器类型,如 vector:

         vector<int>::iterator iter;
    

    这符语句定义了一个名为 iter 的变量,它的数据类型是 vector<int> 定 义的 iterator 类型。每个标准库容器类型都定义了一个名为 iterator 的成 员,这里的 iterator 与迭代器实际类型的含义相同。 

    2.begin end 操作

    每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。如

    果容器中有元素的话,由 begin 返回的迭代器指向第一个元素:

    vector<int>::iterator iter = ivec.begin(); 

    由 end 操作返回的迭代器指向 vector 的“末端元素的下一个”。“超出 末端迭代器”(off-the-end iterator)。表明它指向了一个不存在的元素。 

    由 end 操作返回的迭代器并不指向 vector 中任何实际的元 素,相反,它只是起一个哨兵(sentinel)的作用,表示我们 已处理完 vector 中所有元素。 

    3.vector 迭代器的自增和解引用运算 

    迭代器类型可使用解引用操作符(dereference operator)(*)来访问迭 代器所指向的元素:

    *iter = 0;

    解引用操作符返回迭代器当前所指向的元素。假设 iter 指向 vector 对 象 ivec 的第一元素,那么 *iter 和 ivec[0] 就是指向同一个元素。 

    4.迭代器应用的程序示例 

    for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)
    
             *iter = 0;  // set element to which iter refers to 0

    5.
    const_iterator

    前面的程序用 vector::iterator 改变 vector 中的元素值。每种容器类型 还定义了一种名为 const_iterator 的类型,该类型只能用于读取容器内元素, 但不能改变其值。 

     // use const_iterator because we won't change the elements
         for (vector<string>::const_iterator iter = text.begin();iter != text.end(); ++iter)
             cout << *iter << endl; // print each element in text
    6.
    任何改变 vector 长度的操作都会使已存在的迭代器失效。例 如,在调用 push_back 之后,就不能再信赖指向 vector 的迭 代器的值了。 
  • 相关阅读:
    pom.xml基础配置
    Maven零散笔记——配置Nexus
    搭建局域网maven仓库
    java 加密解密
    菠萝大象--sping
    (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
    eclipse 如何把java项目转成web项目
    Effective Java
    More Effective C++
    Effective C++
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/2835924.html
Copyright © 2011-2022 走看看