タグ

stlに関するHoriuchi_Hのブックマーク (7)

  • http://www.sun-inet.or.jp/~yaneurao/intensive/cppmaniax/chap0004.html

    連想コンテナのerase STLの連想コンテナ(map/multimap/set/multiset)のeraseの返し値は、C++標準ではvoidである。これは、削除した次の要素の先頭を返すiteratorを実装するとパフォーマンスに問題があるとしたC++標準の見解を示すものであるが、STL実装者の間では、それはないだろうという意見が大半を占めている(⇒EffectiveSTL.第5項。やねうらおもそう思う)ので、VC++6/VC++.NETの実装はiteratorを返す実装となっている。 ※ ちなみに、シーケンス(deque/list/vector)では削除した要素の次の要素を指すイテレータを返す。 STLPortのような標準にきっちり準拠しているお利口ちゃんの実装系に移植するときに問題となる。iteratorを返してくれないので、削除した次の要素はどれだかわからない。仕方ないので

  • iostream の状態について - IT戦記

    書いとかないと忘れそうなのでメモ gcc の basic_ios は以下のような operator void* と operator! を持っているので //@{ /** * @brief The quick-and-easy status check. * * This allows you to write constructs such as * "if (!a_stream) ..." and "while (a_stream) ..." */ operator void*() const { return this->fail() ? 0 : const_cast<basic_ios*>(this); } bool operator!() const { return this->fail(); } //@} 以下のように if (in.read(buf, size)) // o

    iostream の状態について - IT戦記
  • 2008-12-23

    C++初心者の私がC++をやめたくなった瞬間。 なにをいまさらな。 はじめに C++のstreamはとても良くできていて、これを用いたライブラリを作りたいのだけど、 当に(主にパフォーマンス的な理由で)大丈夫なのとかそういう話。 初めにお断りしておきますが、以下の内容はすべてlinux+gcc4.3での話です。 streamは遅い ふつうにistreamからget()して、ostreamにputしてるとめちゃくちゃ遅い。 C言語のgetchar, putcharより10進数で1.5桁ぐらい遅いよ。 istream::readとかででかいブロック読めば大丈夫なのだけど、 細かい単位で読みたいことの方が多いよね。 そういうわけで、そういう場合にも速く転送することが可能なのかどうか調べてみる。 テストプログラム istreamの内容をostreamに転送するプログラムを6通り書いた。 その1:

    2008-12-23
  • MASATOの開発日記

    C++標準ライブラリには、ハッシュマップを扱うためのhash_mapというクラスがあります (正確にはhash_mapはまだC++標準ライブラリには含まれて居ません。現在のところMicrosoftの独自拡張という扱いになるはずです)。 ハッシュマップのキーとして、文字列を使うケースは良くあると思います。 しかし、hash_mapのキーとして、std::stringを使うことはできますが、CStringを使うことはできません。 そこで、hash_mapのキーとしてCStringも使えるようにしよう、というお話です。 CStringがhash_mapのキーとして使えない理由は、CStringがhash_map用のハッシュ値取得インターフェースを持っていないからです。 そこで、CStringからハッシュ値を取得できるクラスを外部から与えることにします。 肝心のハッシュ値の計算方法ですが、MFCコ

  • C++/STLで正規表現 - とあるソフトウェアエンジニアのブログ

    今まで正規表現を使いたい場合、とっとと別の言語に切り替えていた私ですが、Boostというライブラリの正規表現パッケージを使ってみました。Boostのサイトにはサンプルはあるのですが、C++/STLでさくっと正規表現を使うにはイマイチ感があったので、覚書ということでサンプルのせます。ちなみに、Boostのインストール等の情報はLet's Boostがお勧めです。 若干ですがコードの説明を、サンプルはHTTPのレスポンスヘッダ(WEBサーバーからの戻りヘッダ)からCookie情報を取得するものです。関数 boost::regex_search が正規表現を使って文字列の検索を行っています。 その他、正規表現の利用法として入力値のチェックもあるかと思います。その場合、boost::regex_matchという関数が使えます。 #include <boost/regex.hpp> #include

  • STLのページ

    角のページへ戻る STL(Standard Template Library) C++の標準テンプレートライブラリ、STLのページです。 2003/6/7 コンテナ全ページ標準に合わせて修正 目次(と予定) 更新履歴 はじめに STLとは? '99 11/07 作成 その前にC++で知っておかなければならないこと 馴染みがない(かもしれない)単語 '99 9/23 わずかに修正 テンプレート(template<>) 2001 1/31 更新 環境 '99 2/20 VCでSGI_STLを使う、BeOS、egcs等 使い方 イテレータ(反復子)の使い方 '99 6/19 更新 関数オブジェクトの使い方 '99 7/4 mem_fun()の使い方追加 早見表 STLで使う主なクラス '99 6/13 各クラスの説明、ヘッダをまとめた STLで使われる名前 '99 6/13 微妙に更

    Horiuchi_H
    Horiuchi_H 2007/03/08
    C++の標準テンプレートライブラリのリファレンス。使い方は別にぐぐれ。
  • 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

    Horiuchi_H
    Horiuchi_H 2006/04/05
    STLの書籍の写し
  • 1