
Content-Length: 266286 | pFad | http://b.hatena.ne.jp/mas-higa/STL/
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 をテ
はじめに お久しぶりです。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 してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として
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
C++AdventCalendarの記事です。 さて、 生配列使ってますか? tr1::array(boost::array) 使ってますか? 生配列使っていると答えた貴方、 →まず死ね。 はい、arrayが常識ですよね。 さて、とはいえ、 「テンプレートを使うと遅いしコードがでかいし」 「生配列が一番速いしコードが小さいし」 「なのでテンプレート禁止」 なんて話を聞くこともあるかと思いますが、 こういう事をいう人は大抵「テンプレートを書いたことがない」のに言ってます。 なぜか? こういう人が本当に心配しているのは「テンプレートが肥大化すること」じゃないのです。 「テンプレートが書けないし読めないのを認めたくないからです」 多くはCの老害だからですが、そういう人は放っておいてC++な人はきちんとテンプレートを使いましょう。 だって多くのテンプレートのコードは大きくもなければ非効率でもないか
この記事はC++ Advent Calendar jp 2010 : ATNDの参加記事です 軽い気持ちでAdvent Calenderに参加してしまった事を若干後悔しながら この記事を書いておりますが、なにぶん僕はそんな変態プログラミングが出来るわけでもないですし、変態じゃないですし、 そういったことは僕より前の日付の人の記事や僕より後の日付の記事に期待していただくとして、 僕は今回Oven関連で。ええ、やっぱり好きなので。 Motivetion 他の人が書いたライブラリとか、コンテナとか、STL互換じゃなかったりするじゃないですか。 それだけです。 (ところでSTL互換ていうのは、コンテナであれば規格でいうContainer Requirementsを満たして、STLの他のコンテナと同じように扱えて振舞うみたいなことでいいんですかね。) で、まあ、要素にアクセスするのにSome3rdP
09:25 10/12/31 年末まとめ 今年何やったっけ、と日記を読み返していました。何もやってないな…。 Polemy 作りました、くらい。 言語処理系作るのはやっぱり楽しいですね。 汎用言語として使う本格的なものを作ろうとすると懲りすぎて一歩も進まなくなってしまう自分が見えるので、 来年は、そうだなあ、TopCoder/ICPC風コンテストに特化した言語というかC++へのトランスレータ、 くらいに絞って作ってみようかなあ。 書いた記事だと 最短性チェックの話 が自分では割と気に入っています。 これのもっとバグを許容するバージョン作れないか。 読んだ論文で面白かったのは "A Pearl on SAT Solving in Prolog" と "When Simulation Meets Antichains" (PDF) など。 あとは、今年読んで面白かった本ベスト5(順不同): 『
この記事は C++ Advent Calendar jp 2010 の参加記事です。 導入 皆さんは C++ と聞いて、まず何を思い浮かべますか? 「C++? そんなの過去の遺物だろ? GC ないとか原始的すぎるじゃん?」 って思う人もいれば、 「いや、 C++ って無闇に複雑すぎて使えない。正直 C 言語で十分でしょ」 って人もいるでしょう。 が、今回は、そういう「不便だ」「キモい」「でも迂闊に dis ると闇の軍団怖いし…」的な論争は*1とりあえず置いておくことにします。 代わりに、 「デストラクタや const は便利だよ!」 「 C 言語と連携が取りやすいのがいいね」 「それ以上に、ゼロオーバーヘッドだし、いざとなれば効率化できるのが素晴らしい」 「普段は効率化なんて意識しなくても使えるしね」 的な「 C++ を使う利点」を考えてみると、 テンプレートと、その応用例である STL
C++ の string と vector の reserve() の挙動 C++ の string と vector には前もって容量を確保するための reserve() というメンバ関数があります。何気なく使っていた関数ですが最近になって興味深い挙動に気づきました。 reserve() の基本 string と vector の reserve() は前もって容量 (capacity) を確保しておくためのメンバ関数です。前もって容量を確保 (reserve) しておけば、データの追加時に発生する再割り当て (reallocation) を防ぐことができ、効率的です。 たとえば、何もしないで文字列に 1,000文字追加した場合、(内部的に倍々で容量を増やしていくため)10回程度の再割り当てが発生しますが、 s.reserve(1000) のように容量を確保しておけば 1回の割り当て (
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: http://b.hatena.ne.jp/mas-higa/STL/
Alternative Proxies: