C++语言

  1. 迭代器、

    1. 迭代器是以一种遍历容器内元素的数据类型、类似于指针、
    2. 迭代器、指向容器中的某个元素、常用迭代器访问容器中的元素、和修改迭代器所指向的元素值、
  2. 容器的迭代器类型、

    1. 定义迭代器、

      1. vector<int> a = { 1,2,3,4,5,6,7 };
        
        	vector<int>::iterator b;//定义迭代器、
        
      2. b、便是迭代器、vector::iterator 是迭代器的类型、专门在迭代器中使用的类型、不可更改、

  3. 迭代器begin()/end()操作、反向迭代器rbegin()/rend()操作、

    1. begin()/end() 函数 作用返回迭代类型、

      1. begin()返回一个迭代器类型、(返回一个迭代器)

        1. vector<int> a = { 1,2,3,4,5,6,7 };
          
          	vector<int>::iterator b;//b是迭代器、
          	b = a.begin();
          
        2. 如果容器内有元素、则返回指向容器中的第一个元素、

      2. end()返回一个迭代器类型、

        1. vector<int> a = { 1,2,3,4,5,6,7 };
          
          	vector<int>::iterator b;//定义迭代器、
          	b = a.begin();
          	b = a.end();
          
        2. end返回的是迭代器是指向末端元素的后面、也就是一个不存在的元素、

        3. 如果容器内为空的话、那么begin()h和end()返回的迭代器就相同、end相当于一个结束标记、迭代器遍历容器内容的话、会从begin开始、直到遇到end便提示遍历结束、

        4. 迭代器可以自加加、正向迭代器、从前往后读、

          1. vector<int> a = { 1,2,3,4,5,6,7 };
            for (vector<int>::iterator b=a.begin();b!=a.end();b++)
            {
            	cout << *b << endl;//*b迭代器运算符、
            }
            
    2. rbegin()/rend()也是函数、作用是范围迭代类型、从后往前读、

      1. 反向迭代器定义、

        1. vector<int> a = { 1,2,3,4,5,6,7 };
          
          	vector<int>::reverse_iterator b;//定义迭代器、
          
        2. 使用、

        3. for (vector<int>::reverse_iterator b=a.rbegin();b!=a.rend();b++)
          	{
          		cout << *b << endl;
          	}
          
  4. 迭代器运算符、

    1. *b; 返回迭代器b所指向的引用、须保证迭代器指向有效的容器元素、不能指向end、因为end指向的是不存在的内容、

    2. b++或者++b指向的是容器中的下一个元素、而— —b或者b - -则指向的是容器中的上一个元素、

    3. 引用结构体中的成员、

      1. struct a
        {
        	int f;
        };
        vector<a>b;
        	a c;
        	c.f = 10;
        	b.push_back(c);
        	
        	vector<a>::iterator e;//必须指向有效的元素、
        	e = b.begin();//指向第一个元素
        	cout << (*e).f << endl;//引用c的结构内容、或者使用
        	cout << e->f << endl;//使用指向运算符、
        
        
      2. 将对象赋值到容器中、使用的并不是同一段内存、

    4. 两个迭代器可以相减、相减代表的两个迭代器的距离、元素的距离、

  5. const_iterator迭代器、

    1. const——常量、值不可以被改变、
    2. const_iterator迭代器表示的是这个迭代器所指向的元素值不能被改变、而非本迭代器本身不能改变、迭代器的本身可以改变、但指向可以变成常量而不改变
    3. 使用const_iterator后迭代器就会变成只读、
    4. 常量容器必须使用常量迭代器、
  6. 	vector<int> a = { 1,2,3,4,5,6,7 };
    	for (vector<int>::const_iterator b=a.begin();b!=a.end();++b)
    	{
    		cout << *b << endl;
    	}
    
  7. cbegin()和cend()操作、

    1. 和begin\end类似、不过cbegin和cend返回的都是常量迭代器、
  8. 迭代器失效、

    1. 在使用容器的循环体中、不要改变容器的容量、任何容器都不要增加和删除内容、
posted on 2020-10-02 15:55  程耀辉  阅读(174)  评论(0编辑  收藏  举报