タグ

STLに関するmas-higaのブックマーク (11)

  • C++ Cheat Sheets & Infographics

    Standard Algorithms

    C++ Cheat Sheets & Infographics
  • unique_ptr のデリータ指定 - krustf の雑記

    25日の記事のコメントで default_delete の特殊化で解決する方法を教えていただきました。ありがとうございます。 個人的メモとして今の所知ってる unique_ptr のデリータ指定方法を纏めておきます。 1.関数オブジェクトを渡す 一番メジャーな方法。関数オブジェクトを作って default_delete の代わりに指定します。 struct master_voice_deleter { void operator()( IXAudio2MasteringVoice* voice ) const { voice->DestroyVoice(); } }; std::unique_ptr< IXAudio2MasteringVoice, master_voice_deleter > ptr; 2. default_delete の特殊化で解決 default_delete をテ

    unique_ptr のデリータ指定 - krustf の雑記
  • unique_ptr で今風な C++ コードを書こう!! - @nojima's blog

    はじめに お久しぶりです。KMC OB の id:nojima です。 この記事は KMC Advent Calendar 2014 の10日目の記事です。 昨日は id:murata さんの「受験生応援!Javascriptでひねくれ数列」 でした。 今日は C++ の unique_ptr の話です。 (最初は rvalue について書こうと思っていたのですが、書いてみると unique_ptr だらけになったのでタイトルを変えました。なので、KMC Advent Calendar 2014 に書いてあるタイトルとはい違っています。すみません) 個人的には C++03 ではなく C++11 を使う最大の理由は unique_ptr の存在だと思っています。 例外発生時にももれなく delete してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として

    unique_ptr で今風な C++ コードを書こう!! - @nojima's blog
  • MSのあまりにもひどいマクロ - ここは匣

    2013-10-10 MSのあまりにもひどいマクロ maxとかminとかが使えないと思ったらminwindef.hとかいうところでマクロとして定義されていてキレそうっていうかこれは完全にブチギレ— 秋弦めい (@maytheplic) October 10, 2013 http://stackoverflow.com/questions/5004858/stdmin-gives-error StackOverflowにも同じような事言ってる人が居たので引用。 どうやら以下のようなコードがエラーになるらしいです #include <algorithm> #include <Windows.h> int main() { int k = std::min(3, 4); return 0; } error C2589: '(' : illegal token on right side of

    mas-higa
    mas-higa 2013/10/11
    どっちが避けるべきかは、勝ったものが正義的な感じする。
  • 「ソートも、サーチも、あるんだよ」 ~標準C++ライブラリにみるアルゴリズムの面白さ

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    「ソートも、サーチも、あるんだよ」 ~標準C++ライブラリにみるアルゴリズムの面白さ
  • ポインタは用法用量を守って正しくお使いください - kikairoya’s diary

  • 使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために

    C++AdventCalendarの記事です。 さて、 生配列使ってますか? tr1::array(boost::array) 使ってますか? 生配列使っていると答えた貴方、 →まず死ね。 はい、arrayが常識ですよね。 さて、とはいえ、 「テンプレートを使うと遅いしコードがでかいし」 「生配列が一番速いしコードが小さいし」 「なのでテンプレート禁止」 なんて話を聞くこともあるかと思いますが、 こういう事をいう人は大抵「テンプレートを書いたことがない」のに言ってます。 なぜか? こういう人が当に心配しているのは「テンプレートが肥大化すること」じゃないのです。 「テンプレートが書けないし読めないのを認めたくないからです」 多くはCの老害だからですが、そういう人は放っておいてC++な人はきちんとテンプレートを使いましょう。 だって多くのテンプレートのコードは大きくもなければ非効率でもないか

    使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために
  • STL非互換コンテナのRange - How to disappear completely

    この記事はC++ Advent Calendar jp 2010 : ATNDの参加記事です 軽い気持ちでAdvent Calenderに参加してしまった事を若干後悔しながら この記事を書いておりますが、なにぶん僕はそんな変態プログラミングが出来るわけでもないですし、変態じゃないですし、 そういったことは僕より前の日付の人の記事や僕より後の日付の記事に期待していただくとして、 僕は今回Oven関連で。ええ、やっぱり好きなので。 Motivetion 他の人が書いたライブラリとか、コンテナとか、STL互換じゃなかったりするじゃないですか。 それだけです。 (ところでSTL互換ていうのは、コンテナであれば規格でいうContainer Requirementsを満たして、STLの他のコンテナと同じように扱えて振舞うみたいなことでいいんですかね。) で、まあ、要素にアクセスするのにSome3rdP

    STL非互換コンテナのRange - How to disappear completely
  • 正規表現しちへんげ! 第二夜

    09:25 10/12/31 年末まとめ 今年何やったっけ、と日記を読み返していました。何もやってないな…。 Polemy 作りました、くらい。 言語処理系作るのはやっぱり楽しいですね。 汎用言語として使う格的なものを作ろうとすると懲りすぎて一歩も進まなくなってしまう自分が見えるので、 来年は、そうだなあ、TopCoder/ICPC風コンテストに特化した言語というかC++へのトランスレータ、 くらいに絞って作ってみようかなあ。 書いた記事だと 最短性チェックの話 が自分では割と気に入っています。 これのもっとバグを許容するバージョン作れないか。 読んだ論文で面白かったのは "A Pearl on SAT Solving in Prolog" と "When Simulation Meets Antichains" (PDF) など。 あとは、今年読んで面白かったベスト5(順不同): 『

  • 2010-12-10

    この記事は C++ Advent Calendar jp 2010 の参加記事です。 導入 皆さんは C++ と聞いて、まず何を思い浮かべますか? 「C++? そんなの過去の遺物だろ? GC ないとか原始的すぎるじゃん?」 って思う人もいれば、 「いや、 C++ って無闇に複雑すぎて使えない。正直 C 言語で十分でしょ」 って人もいるでしょう。 が、今回は、そういう「不便だ」「キモい」「でも迂闊に dis ると闇の軍団怖いし…」的な論争は*1とりあえず置いておくことにします。 代わりに、 「デストラクタや const は便利だよ!」 「 C 言語と連携が取りやすいのがいいね」 「それ以上に、ゼロオーバーヘッドだし、いざとなれば効率化できるのが素晴らしい」 「普段は効率化なんて意識しなくても使えるしね」 的な「 C++ を使う利点」を考えてみると、 テンプレートと、その応用例である STL

    2010-12-10
    mas-higa
    mas-higa 2010/12/10
    one-phase construction
  • C++ の string と vector の reserve() の挙動 - bkブログ

    C++ の string と vector の reserve() の挙動 C++ の string と vector には前もって容量を確保するための reserve() というメンバ関数があります。何気なく使っていた関数ですが最近になって興味深い挙動に気づきました。 reserve() の基 string と vector の reserve() は前もって容量 (capacity) を確保しておくためのメンバ関数です。前もって容量を確保 (reserve) しておけば、データの追加時に発生する再割り当て (reallocation) を防ぐことができ、効率的です。 たとえば、何もしないで文字列に 1,000文字追加した場合、(内部的に倍々で容量を増やしていくため)10回程度の再割り当てが発生しますが、 s.reserve(1000) のように容量を確保しておけば 1回の割り当て (

  • 1