• C++中迭代器


    C++中的容器

      标准序列容器:vector、string、deque、list

      标准关联容器:set、multiset、map、multimap

    迭代器的分类

      根据迭代器所支持的操作,可以把迭代器分为5类。

      1、输入迭代器:是只读迭代器,在每个被遍历的位置上只能读取一次。

      2、输出迭代器:是只写迭代器,在每个被遍历的位置上只能被写一次。

      3、前向迭代器:兼具输入和输出迭代器的能力,但是它可以对同一个位置重复进行读和写。但它不支持operator--,所以只能向前移动。

      4、双向迭代器:很像前向迭代器,只是它向后移动和向前移动同样容易。

      5、随机访问迭代器:有双向迭代器的所有功能。而且,它还提供了“迭代器算术”,即在一步内可以向前或向后跳跃任意位置。

    C++容器中提供的迭代器

      1、输入和输出迭代器的模型分别是建立在针对输入和输出流(例如文件)的读写操作基础上的。所以不难理解,输入和输出迭代器最常见的表现形式是 istream_iterator和ostream_iterator。

      2、所有的标准STL容器都支持比前向迭代器功能更强大的迭代器。(哈希容器的一种、单向链表容器例外,它们提供前向迭代器)

      3、标准关联容器都提供了双向迭代器。list也是如此。

      4、vector、string、deque都提供了随机访问迭代器。指向数组的内部指针对于数组来说也是随机访问迭代器。

    istream_iterator和ostream_iterator使用示例

    istream_iterator
     1 // istream_iterator example
     2 #include <iostream>
     3 #include <iterator>
     4 using namespace std;
     5 
     6 int main () {
     7   double value1, value2;
     8   cout << "Please, insert two values: ";
     9 
    10   istream_iterator<double> eos;         // end-of-stream iterator
    11   istream_iterator<double> iit (cin);   // stdin iterator
    12 
    13   if (iit!=eos) value1=*iit;
    14 
    15   iit++;
    16   if (iit!=eos) value2=*iit;
    17 
    18   cout << value1 << "*" << value2 << "=" << (value1*value2) << endl;
    19 
    20   return 0;
    21 }
    22 

     output:

    
    Please, insert two values: 2 32
    2*32=64
    

    ostream_iterator
     1 // ostream_iterator example
     2 #include <iostream>
     3 #include <iterator>
     4 #include <vector>
     5 using namespace std;
     6 
     7 int main () {
     8   vector<int> myvector;
     9   for (int i=1; i<10++i) myvector.push_back(i*10);
    10 
    11   ostream_iterator<int> out_it (cout,"");
    12   copy ( myvector.begin(), myvector.end(), out_it );
    13   return 0;
    14 }
    15 

    output:

    
    10, 20, 30, 40, 50, 60, 70, 80, 90, 
  • 相关阅读:
    CRM 跳转到数据修改页面、动态生成model,form、增加新增页面——第21天
    CRM 日期字段过滤功能——第21天
    CRM多条件查询——第20天
    CRM排序——第19天
    CRM_分页显示——第18天
    CRM分页 ——第17天
    CRM多条件筛选和分页——第16天
    python global、nonlocal、闭包、作用域——第10天
    uniAPP view 和 swiper
    uniAPP tabBar 设置
  • 原文地址:https://www.cnblogs.com/younes/p/1649724.html
Copyright © 2020-2023  润新知