C++将指针用作迭代器-将信息复制到显示器上/从输入流中复制信息

来源:互联网 发布:张定国 非诚勿扰 知乎 编辑:程序博客网 时间:2024/04/28 11:46

1迭代器是广义指针,所以指针满足所有的迭代器要求

迭代器是STL算法的接口  ------>STL算法可以使用指针(来对基于指针的非STL容器进行操作)

||

指针是迭代器

例如:可以将STL的算法用于数组

    const int  SIZE=10;

          double Arr[SIZE];

          sort(Arr,Arr+SIZE);  //sort()为STL算法


2.copy()算法

int arr[5]={1,2,3,4,5};

vector<int> brr[5];

copy(arr,arr+5,brr);  //前两个迭代器参数表示要复制的范围,第三个迭代器参数表示要将第一个元素复制到什么位置

//前两个参数必须是输入迭代器,最后一个参数必须是输出迭代器


1>应用1将信息复制到显示器上

    必须要有一个表示输出流的迭代器,才可以使用copy()

     STL为输出迭代器提供了ostream_iterator模板(该模板是输出迭代器概念的一个模型)

     [补充:概念--一系列的要求;    改进---表示概念上的继承;   模型---概念的具体实现]

     #include<iterator>

     ostream_iterator<int,char>out_iter(cout," "); //第一个参数指出被送给输出流的数据类型;第二个参数指出了输出流使用的字符类型

 //构造函数的第一个参数指出了要使用的输出流,可以是用于文件的输出流,最后一个参数是在发送给输出流的每个数据项后显示的分隔符

     *out_iter++=15;   //cout<<15<<" ";

    copy(dice.begin(),dice.end(),out_iter);//将dice的整个区间复制到输出流中


2>应用2从输入流中读取信息

    copy(istream_iterator<int,char>(cin),istream_iterator<int,char>(),dice.begin());

//使用构造函数参数cin意味着有cin管理输入流

//省略构造函数参数表示输入失败,上述代码表示从输入流中读取,直到文件结尾、类型不匹配或出现其他输入故障为止

   

原创粉丝点击