码迷,mamicode.com
首页 > 移动开发 > 详细

使用iostream Iterator

时间:2017-04-21 22:40:20      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:文件名   实现   ext   insert   通过   nbsp   err   绑定   表示   

以前只知道IteratorIterator class。平时编程中用的最多的就是拿他遍历某种容器。

今天遇到一种新的使用方式,记录之。

比如有这样一个任务,从标准输入设备读取一串string元素,将它们存到vector内,并进行排列,最后再将这些字符串写回标准输出设备,一般代码大都会是这样的.(已经注释掉的)

#include<iostream>
#include<iterator>
#include<algorithm>
#include<vector>
#include<string>

using namespace std;
int main(){
    string word;
    /*vector<string>text;
    while (cin>>word){
        text.push_back(word);
    }
        
    sort(text.begin(), text.end());
    for (int ix = 0; ix < text.size(); ix++)
        cout << text[ix] << ‘ ‘;*/
    istream_iterator<string> is(cin);   //将is绑定至标准输入设备
    istream_iterator<string> eof;  //表示要读取的最后一个元素的下一个位置,对标准输入设备而言,end-of-file即代表last,只要在定义istream_iterator时不为他指定istream对象,它便代表end-of-file。
    vector<string> text;
    copy(is, eof, back_inserter(text));  //back_inserter是Iterator Inserter,所谓的insertionadapter,避免使用容器的赋值符,因为使用=必须事先决定一个容器的大小。
    sort(text.begin(), text.end());
    ostream_iterator<string> os(cout, " ");
    copy(text.begin(), text.end(), os);
    return 0;
}

 

 

但是通过iostream iterator可以用上述(没有注释掉的)的方法进行实现。

如果要输入到文件中可以添加如下代码

ifstream in_file("文件名");
ofstream out_file("文件名");
if (!in_file || !out_file){
    cerr << "unable to open the necessary files.\n";
    return -1
}2017-04-21 21:55:35

 

使用iostream Iterator

标签:文件名   实现   ext   insert   通过   nbsp   err   绑定   表示   

原文地址:http://www.cnblogs.com/chenghuiwen109/p/6746264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!