<< 前 ホーム 次 >>

bakaid: 200612061

帰ってきて『C++標準ライブラリ チュートリアル&
リファレンス』見たんですけど、もう笑うしかない
ですね。ワケワカラン。

で、mem_fun1って古い名前なんじゃないですかね?
sidのg++-4.1だとコンパイルできませんでした。
mem_funに変えると通りました。

仕事先で確かめたときはVC 2005 Expressで、それは
mem_fun1で通ったんですけど。

mem_fun1は、上記の本でも紹介されてないです。

--

C++といえば、ちょっと思ったことがあって。

C++って、なまじっか古いじゃないですか。んなもん
だから、古い人でも新しいC++の使い方知らないことが
あるんですよね。

たとえば、sstreamとか、知っときゃ使えるのに。
atoiとかいらないでしょ? 安全だし。

#include <iostream>
#include <sstream>

using namespace std;

int
main(int argc, char* argv[])
{
    istringstream in(argv[1]);
    int i, j, k;
    in >> i >> j >> k;
    cout << i << "," << j << "," << k << endl;
    return 0;
}

(良い子のみんなはちゃんとエラー処理しましょうね。)

行単位の処理もラクだし:

#include <iostream>
#include <sstream>

using namespace std;

int
main(int argc, char* argv[])
{
    string str;
    int c;
    while ((c = cin.get()) != EOF) {
        str.append(1, (char) c);
    }

    istringstream in(str.c_str());
    string line;
    while (getline(in, line)) {
        cout << line << endl;
    }
    return 0;
}

もちろん、自分なんか、全然C++知らないんですけど。
だから、メタテンプレートとかワケワカラン世界も
あるにはあるんですけど、新しい標準ライブラリで
ラクになる部分もたくさんあるんですよね。

ここで大事なのは、標準ライブラリを学ぶのに躊躇する
理由がないっていうこと。もちろん、膨大な量だし
腰が引けちゃうんだけど、でも、『それが標準』という
だけで学ぶ理由には十分なるわけです。

--

ああ、ちょっとわかった。algorithmとかを使えば、
長ったらしい型宣言を書かないで済むんですね。

void
CDrawAppDoc::makeRects()
{
    for (std::vector<RectModel*>::iterator it = models.begin();
         it != models.end(); ++it) {
        GeomRect* rect = new MovableRect(*it);
        rects.push_back(rect);
    }
}
 
void
CDrawAppDoc::activateTop()
{
    if (rects.empty()) return;
    for (std::vector<GeomRect*>::iterator it = rects.begin();
         it != rects.end(); ++it) {
        (*it)->beInactive();
    }
}

みたいなのが:

void
CDrawAppDoc::makeRects()
{
    for_each(models.begin(), models.end(),
             bind1st(mem_fun(&CDrawAppDoc::addRect), this));
}

void
CDrawAppDoc::activateTop()
{
    for_each(rects.begin(), rects.end(), mem_fun(&GeomRect::beInactive));
    rects[0]->beActive();
}

みたくなると。最初のほうは、あんまり短くなって
ませんけど、でも、まぁ、気分は数段いいです。

こういうやり方だと、lots of little piecesが促進され
そうです。

--

最近、自分がバカだと痛感させられることが多くて。
いや、前からわかっちゃいたんですけど。やっぱり
バカだなと。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails