イレテータ
イテレータです。イレテータじゃありません。イ テ レ ー タ です。
もう面倒だから反復子でいいんじゃないの?
いやダメです。イ テ レ ー タ です。
C++のcoutとかcinとかのストリームってのは何だか微妙だなぁ~
なんて思っていたのですが、ちょっと考えが変わったかも
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
string from, to;
cin >> from >> to;
//入力ストリームのオープン
ifstream is(from.c_str());
//入力イテレータの生成
istream_iterator<string> ii(is);
//引数なしのコンストラクタを呼ぶとend-of-streamイテレータが生成される
istream_iterator<string> eos;
//ファイルの先頭からEOFまでstringで読み込む
vector<string> b(ii, eos);
//bの全体をソート
sort(b.begin(), b.end());
//出力ストリームのオープン
ofstream os(to.c_str());
//出力イテレータの作成
ostream_iterator<string> oo(os, "\n");
//重複なしで出力する
unique_copy(b.begin(), b.end(), oo);
return !is.eof() && !os;
}
ファイルfromから単語を読み出して、アルファベット順にソートした後、単語の重複をしないようにファイルtoへ出力するプログラム(プログラミング言語C++第3版より)
なんか、おぞましいことになってるね
イテレータ(反復子)ってのがどうなってるのかはコンテナとかによるんだけど、見た目的には同じ様に扱える。
やるじゃん、イテレータ。
でも、たった十行程度を理解するのにだいぶ時間かかったorz
便利なモノが凄く多いのはとてもいいのですが、俺なんかじゃ使いこなせないよね~
う~ん、試しに何かC++で作ってみようかなぁ