zoukankan      html  css  js  c++  java
  • 学习第43天

    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. 和beginend类似、不过cbegin和cend返回的都是常量迭代器、
    8. 迭代器失效、

      1. 在使用容器的循环体中、不要改变容器的容量、任何容器都不要增加和删除内容、
  • 相关阅读:
    STM32的CRC32 软件实现代码
    AES CBC/CTR 加解密原理
    Either, neither, both
    Answer Sheet
    Both
    How to convert a byte to its binary string representation
    how convert large HEX string to binary array ?
    TEA -- Tiny Encryption Algorithm
    DES
    IAR EWARM Checksum Technical Note
  • 原文地址:https://www.cnblogs.com/chengyaohui/p/13761811.html
Copyright © 2011-2022 走看看