2005年08月07日

Effective STL

Effective STL―STLを効果的に使いこなす50の鉄則という本を読みましたので紹介をしたいと思います。読んだのはだいぶ前のことですが。

Effective STLは、C++の標準ライブラリの一部であるSTLのテクニックについて書かれた本で、 マニュアルからは簡単には見つからないようなテクニックが満載されてます。
こんな方にお勧めの一冊です。

  • C++のSTLをマニュアルのサンプルコードを読みつつ見よう見まねで使っている人
  • イテレータの正しい使い方を知りたい方
  • テンプレートライブラリの使い方について学びたい方

これを読むと、例えば、
「英文から単語を切り出し、アルファベット順に並べて各単語が何回出現したかをリスト表示する」プログラムが こんな風に書けるようになります。

int main(int argc, char* argv[])
{
  typedef std::map<std::string, int> WordMap;
  WordMap Words;
  while (std::cin) {
    std::string Word;
    std::cin >> Word;
    Word = std::string(Word.begin(), std::find_if(Word.begin(), Word.end(), std::not1(std::ptr_fun(std::isalpha))));
    if (!Word.empty()) {
      std::transform(Word.begin(), Word.end(), Word.begin(), std::tolower);
      Words[Word] ++;
    }
  }
  for (WordMap::iterator i = Words.begin(); i != Words.end(); ++i) {
    std::cout << i->first << "\t" << i->second << std::endl;
  }
  return 0;
}

このコードが良いものかどうかは分かりません。 しかし、こういったコードが書けるようになると、選択肢が増えます。選択肢が増えるのは、悪いことではないはずです。

なお、このコードを見て、私ならばもっと簡潔に書けるぞ、と思った方は、たぶんもうこの本を読まなくても良いと思います。 投稿者 MASATO : 2005年08月07日 14:49 | トラックバック

コメント
コメントする









名前、アドレスを登録しますか?