イレテータ
イテレータです。イレテータじゃありません。イ テ レ ー タ です。
もう面倒だから反復子でいいんじゃないの?
いやダメです。イ テ レ ー タ です。
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++で作ってみようかなぁ