何回も書いてるのですが、僕は、「C++を嫌うのは構わないけど、あんまり知らないのにC++を馬鹿にするやつは許さない」という考えなので、何回も書きます!

僕が思ってるよりc++は凄いものなのかもしれないなぁ

std::for_eachというテンプレート関数です(で、あってますよね?)。構文じゃないですが。
giveupさんがどの程度C++を知ってて、「僕が思ってるより」と書いてるかはわからないですが、もし、

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

struct inc {
	template <typename T>
	void operator() (T &i) {
		i++;
	}
};

int main( ) {
	std::vector<int> a;
	std::back_insert_iterator<std::vector<int> > i(a);
	*i++ = 4; *i++ = 2; *i++ = 3;
	std::for_each( a.begin(), a.end(), inc() );
	std::sort( a.begin(), a.end() );
	std::ostream_iterator<int> o( std::cout, "\n" );
	std::copy( a.begin(), a.end(), o );
}

こういうようなコードを見て、何が起こってるかわからないけど、「C++は大したことない」と思っているのであれば、それは、間違いです!(このぐらい理解してて、それでも「C++は大したことない」と思っておられるのであれば、以下はスルーでお願いします)


上の例みたいないかにもサンプルみたいなコードは、実際はありえないので、大したことないといえば、まあそうなんですが、「実際使わないのはいらない」とか言ってる人間は、二度とSchemeとか触るべきじゃないと思います!(暴言)


STLというのは

  1. C++言語としてのテンプレートサポート
  2. 1.の上に乗っかったイテレータを使ったフレームワーク
  3. 2.の上に乗っかった関数、コンテナ群

という三層になってて、それぞれ

  1. 言語の機能は最小限に抑えて(STL専用の新しい組み込み構文は必要無い、という意味で)、ライブラリでなんとかしてる
  2. 自分で作った関数、コンテナを、自然に組み込める
  3. すぐに使える便利な関数とかコンテナ

というみっつの特徴と、対応してて…えーと。言葉では伝えにくい!


とにかく、STLは、データ構造、データ構造へのアクセス方法、データへの操作、を分離することが、どれほど大切なことかを教えてくれるんです。「オブジェクト指向」とか言って、データと操作を一緒にしてしまうのが、いかに愚かなことか!


「シンプルで柔軟な機能を組み合わせて処理を作れるSchemeは素晴らしいね。もうC++はいらないよ!」そんな!ひどい!ちょっと待って!C++を捨てないで!C++には、STLがあるからっ!!シンプルで柔軟な機能を組み合わせる快感はC++でも味わえるからーーー!!


…もとの話とずれすぎだと思った。