タグ

ブックマーク / episteme.wankuma.com (3)

  • Standard Template Library プログラミング on the Web

    1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat

  • イテレータ - Standard Template Library プログラミング

    イテレータ C/C++でのプログラミングで避けて通れないのが"ポインタ"です。ポインタは配列の要素を順にアクセスすることができます: // 配列の要素をプリントする。 void print_array(int* a, int N) { int* p = a; for ( int i = 0; i < N; ++i ) { cout << *p << ' '; ++p; } cout << endl; } int a[10]; print_array(a,10); 同様に、配列とは異なるデータ構造である単方向リストの内容をプリントするには、 struct slink_of_int { int data; slink_of_int* next; // 次のリンク(末端には0を設定) }; // リストの要素をプリントする void print_list(slink_of_int* p) { w

    yasuf
    yasuf 2010/09/09
    イテレーターの種類について
  • Standard Template Library プログラミング

    STLの問題点 STLはソフトウェアの構成部品として非常に強力であり、STLを使いこなすことでコード量を大幅に抑えることができます。が、一方でSTLを使うことによる問題もいくつかあります。ここに挙げる問題点の多くはSTL自身というよりテンプレートにまつわる問題です。 [コンパイラからのメッセージが不可解] STLを使って誤ったコードをコンパイルしたとき、時としてエラーメッセージが"何を言いたいのかわからない"ことがあります。 // 例 : 誤ったコード #include <list> #include <algorithm> using namespace std; void f() { list<int> c; sort(c.begin(), c.end()); // 何ら問題ないように思えるが... } これをコンパイルします。Visual C++ 5.0では: c:\msdev\vc

    yasuf
    yasuf 2010/09/09
    sortはイテレータとしてRandomAccessIteratorを要求するのですが、listのイテレータはBidirectionalIteratorであるため,ソートできない
  • 1