タグ

関連タグで絞り込む (265)

タグの絞り込みを解除

c++に関するtyruのブックマーク (593)

  • ref-qualifier: rvalue referenceの完全を期すための補足

    rvalue reference 完全解説で、rvalue referenceは、ほぼ解説した。ところが、うっかりしたことに、ひとつだけ忘れていた事項があったので、それを解説する。 それは、非静的なメンバ関数に、ref-qualifierがつけられるというものだ。例を挙げる。 struct Foo { void f() & {} void f() && {} } いったいこれは何なのか。これは、thisに対する修飾である。thisは、C++では、歴史上の理由でポインタになっているが、来、参照となるべきであった。thisが指し示すのは、そのクラスのオブジェクトである。 struct Foo { void f() {} } ; int main() { Foo a, b ; a.f() ;// thisは、aを指す。 b.f() ;// thisは、bを指す。 } つまり、非静的なメンバ関数

    tyru
    tyru 2009/12/25
    メンバ関数のcv修飾はthisに対する修飾
  • <boost/detail/algorithm.hpp> - Faith and Brave - C++で遊ぼう

    すぐ忘れるのでメモ。 <boost/detail/algorithm.hpp>には、is_sorted、iotaといったC++0xで導入されるアルゴリズムや いくつかの範囲アルゴリズムが定義されています。 #include <vector> #include <boost/detail/algorithm.hpp> // is_sorted, sort #include <boost/assert.hpp> #include <pstade/oven/initial_values.hpp> #include <pstade/oven/equals.hpp> namespace oven = pstade::oven; int main() { std::vector<int> v = oven::initial_values(3, 1, 2); BOOST_ASSERT(!boost::i

    <boost/detail/algorithm.hpp> - Faith and Brave - C++で遊ぼう
    tyru
    tyru 2009/12/24
    iotaってboostにあるのか
  • shared_ptrまとめ - while( c++ );

    語ドキュメントshared_ptr、weak_ptr boost勉強会http://www.ustream.tv/recorded/2981654 Smart Pointer Programming Techniques 実装してみた shared_ptrの実装1 - while( c++ ); shared_ptrの実装2 - while( c++ ); shared_ptrの実装3 - while( c++ ); shared_ptrの実装4 - while( c++ ); boost::shared_ptrっぽく。 shared_ptrの実装5 - while( c++ ); shared_ptr< void >を可能にする。 shared_ptrの実装6 - while( c++ ); 適当なクラス図とか。 shared_ptrの実装7 - while( c++ ); dele

    shared_ptrまとめ - while( c++ );
  • 今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳

    Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記事書いてるときもロクに検索してないです。間違いとかあったらすみません。 疑問点とか有りましたら、自分で調べるか、あるいは僕に知らせてもらえると助かります。では、始めましょう。 [最終更新] 応用例にカスタムアロケータでの参照カウント管理を追加: 09/12/16 基的な使い道 まず基的なことについては、僕が説明するより、この動画を参照した方が速いでしょう: http://www.ustream.tv/recorded/2981654 それに対するついったーでの突っ込み: http://kiwofusi.sa

    今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳
  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

  • 仮想フレンド関数イディオム 超簡単な説明 - とくにあぶなくないRiSKのブログ

    問題 friend は virtual ではないので,フレンド関数は動的束縛することができません。 struct base{ virtual ~base(){} friend void friend_func(); }; struct derived : public base{ virtual ~derived(){} friend void friend_func(); // virtual にしたい… // ついでに言うと継承するたび(クラスごと)に // friend 指定めんどい… }; void friend_func(){ // base か derived かで動作を変えたい!多態が欲しい! } では,実行時にクラスによってフレンド関数の動作を変えたい時にはどうしたらよいのでしょうか? 解 フレンド関数内で仮想メンバ関数を呼びます。これだけです。これを「仮想フレンド関数イデ

    仮想フレンド関数イディオム 超簡単な説明 - とくにあぶなくないRiSKのブログ
    tyru
    tyru 2009/12/21
  • Boost.勉強会 - YAMAGUCHI::weblog

    久々に毛色の違う勉強会に参加してきました。 Boost.勉強会 : ATND 途中までしか参加できませんでしたが、とても有意義な勉強会でした。C++を自前でごりごり書いていたことを思い出すと、もはやBoost使えば大抵のことはぐっと楽になるなあという印象を強烈に受けた半日でした。 10:10-11:40 Boostライブラリ一周の旅 アキラさん(id:faith_and_brave)の発表。Boost 1.4の全74ライブラリを紹介。 各ライブラリ紹介 スライドのタイトル。紹介中のコメントもたまにメモ。 Accumulators : 統計計算フレームワーク Any : あらゆる型を保持できる動的型 Array : 配列(コンテナのインタフェースが使える)。組み込み配列の代わりとして使うと便利。次期標準ライブラリの予定。 Asio : 非同期ネットワークライブラリ。IPv6対応。 Assig

    Boost.勉強会 - YAMAGUCHI::weblog
  • in-place merge sort - 鍋あり谷あり

    http://blog.livedoor.jp/dankogai/archives/50957658.html に 現代では一時メモリーを使わないin-place merge sortが開発されている と書いてある。そういえば、STLの stable_sort の計算量が O( N (log N)**2 )だったよなぁと思い、どうやったらそうなるのか調べてみたら http://thomas.baudel.name/Visualisation/VisuTri/inplacestablesort.html に実装があるのを発見した(いやその前にSTLのソースを見たんだが、とても読みにくかったので断念した)。 で。ソースから計算内容を理解し、ああなるほどそうするのかと思ってみた。 というわけで、どんな計算なのかを私なりに説明してみる: 左半分と右半分を整列する。 左半分と右半分をマージする。 こ

    in-place merge sort - 鍋あり谷あり
  • C/C++ Technical Documents

    C++ 寄稿記事 επιστημη 氏から寄稿していただいた、開発者の方々にお役に立つテクニカルドキュメントです。Articles、References、Miscelaneousに分かれて説明しています。初心者の方からプロの方まで役に立つ読み物と資料集です。是非、開発のお役にお立て下さい。 Articles: 読み物 References: 資料集 Miscelaneous: 番外編

  • 属性?みたいなの - 足跡

    メソッドでの場合はすぐ忘れるからメモ。 virtual - クラス定義の中でだけvirtualを書く。 static - 同上。 inline - クラス定義内で定義したメソッドには不要。そうじゃない場合は同一ファイル内で関数定義してる場合のみ有効。

    属性?みたいなの - 足跡
    tyru
    tyru 2009/12/15
    よく忘れる
  • Boost.勉強会 - crimsonwoodsの日記

    現地には行けないのでustで見ています。 ustは↓ http://www.ustream.tv/channel/boostjp 資料とかのありかは↓ http://atnd.org/events/1839 twitterのhash tagは #boostjp http://twitter.com/search?q=%23boostjp ここから先はリンク集。 Boostライブラリ一周の旅 発表者:@cpp_akira(id:faith_and_brave)さん 録画映像:http://www.ustream.tv/recorded/2963634 資料:http://cid-8361f69420bd2fb3.skydrive.live.com/self.aspx/%e5%85%ac%e9%96%8b/boost^_tour^_1^_40^_0.pdf Boost.MultiIntrusi

    Boost.勉強会 - crimsonwoodsの日記
  • https://hiratara.hatenadiary.jp/entry/20091212/1260577791

  • DEVShed

    tyru
    tyru 2009/12/10
    multiple definitionって言われたらinline付ければいいらしい なるほどなるほど
  • C++ よりも C# よりも Java でゲームを作ると良い 8 の理由と、悪いほうの 8 つの理由 (大嘘) - ぐるぐる~

    元ネタ:C++よりもC#でゲームを作るとよい8の理由と、悪いほうの8つの理由 - 【長剣は】最強武器候補【鈍器です】 注:この記事での JavaJava SE 6 を、C# は .NET Framework 3.5 を、C++ は Visual Studio 2008 を想定しています。 最新の C# 4.0 や C++0x だと改善されているかもしれませんが、色々とお察しください。 1. enum が便利 C++ も C# も enum は結局単なる整数ですが、Java ではオブジェクトとなります。 // Java enum Sword { LONG, SHORT } valueOf メソッドを使うことで、文字列から enum への変換もでき、Sword.LONG.toString() のように、文字列にすることもできます。 その上、メソッドやフィールドとか持てちゃいます。なんかも

    C++ よりも C# よりも Java でゲームを作ると良い 8 の理由と、悪いほうの 8 つの理由 (大嘘) - ぐるぐる~
    tyru
    tyru 2009/12/09
  • C++よりもC#でゲームを作るとよい8の理由と、悪いほうの8つの理由 - 【長剣は】最強武器候補【鈍器です】

    C#注:この記事でのC#は.NET Framework 3.5を、C++はVisual Studio 6.0を想定しています。最新のC++だと改善されているかもしれませんが、ゲーマー界隈で10年ぐらい保守してるプロジェクトのあとに作ったあとに選ばれるC++コンパイラもまたVS6.0あたりだということでお察しください。1、enumが便利C++の場合、enumで宣言されたものはグローバルなシンボルになりますが、C#では型名を必要とするためにローカルなシンボルになります。 // C++ enum SWORD { SWORD_LONG, SWORD_SHORT, }; // C# enum Sword { Long, // Sword.Long と使う Short, }; さらに、Enum.Parse() を使うことで、文字列からenumへの変換もでき、Sword.Long.ToString()

    tyru
    tyru 2009/12/09
  • 匣の向こう側

    匣の向こう側 自分だけでアクセスカウンタ回している気が・・・ お品書き .NETニュース 街で見かけた.NETさん C++プログラマのためのC#入門 なんちゃってC#入門(2003/08/10) C# Tips 使い道が・・・(2003/08/24) Python Tips Python for .NETだけだとネタ不足なので・・・(2003/10/22) 翻訳希望 洋書読むのは当然ですか。そうですか・・・(2003/08/30) .NETリンク .NET関連のリンク 日記 はてなダイアリーに引っ越しました。 自己紹介 mei(mei@work.email.ne.jp)

    tyru
    tyru 2009/12/09
  • C++プログラマのためのC#入門

    Home> C++プログラマのためのC#入門 更新日:2003/08/10 概要 ページはC++でプログラムを組める人を対象にしています。 既にC++が組めるのに一からC#を覚えるのはかったるい、要点を掻い摘んでさっさとC#でプログラムを組み始めたい、という人のために書かれています。 書いている人が結構いい加減なので、内容もそんな感じです。つっこみがいれられるようになれば卒業です。 Hello, World 最初くらいは由緒正しい手順ってことで、"Hello, World"です。 // hello.cs public class MyApp { public static void Main() { System.Console.WriteLine("Hello, World"); } } 上のコードをhello.csという名前で保存してます。 C#ではソースファイルの拡張子は.csで

    tyru
    tyru 2009/12/09
  • ストリームクラス -- 階層図 - C++ Labyrinth

    ストリームクラス -- 階層図 ストリームクラスに対する自分の理解がいまいちなので、整理するために階層図を作ってみた。 元ネタは、『C++ 標準ライブラリ チュートリアル&リファレンス』 (アスキー) である。 とりあえずは骨格のみ。メソッドなどについては、おいおい肉付けしていく予定。 まずは、ストリームクラスの階層図。 太字にした basic_xxx は、 後ろに <> が付いていることからも分かるようにテンプレートクラスである。 それを char および wchar_t で特殊化したものが、istream や wistream などになる、というわけだ。 ボックスの近くに書いてある < …… > は、 そのクラスを宣言または定義しているヘッダーファイルである。 とくに iosfwd はクラス名だけを宣言しており、 クラスの実体が不要な場合は、 できるかぎり iosfwd だけをインクル

    tyru
    tyru 2009/12/08
  • コンストラクタでの例外は不可能なのか。

    > たしかに、臭いものに蓋的な考え方ですが、関数やLibraryから例外を投げられることもあるので、その場合はcatchして適切な処理を与えましょう。みたいな意味合いで書きました。 いや、デストラクタでは、そもそも例外が送出されるかもしれない関数を呼び出すこと自体を避けるべきです。 例えば何かを外部に出力する場合でも、std::ofstreamよりは、決して例外を送出しないstd::fprintfなどを使う方がよいということです。 > コンストラクタは例外を投げない方が良い。 コンストラクタ内で発生したエラーの通知は、例外を送出することで行うべきです。もっと分かりやすくいうと、コンストラクタが失敗した場合は例外を送出した方がよいのです。 > デストラクタは例外を投げてはいけない。 これはその通り。 > メソッドは例外を投げない方が無難。 (メソッドというか)メンバ関数は必要に応じて例外を送

    コンストラクタでの例外は不可能なのか。
  • 本の虫: シンタックスシュガーとしてのlambdaの解説

    の虫: lambda 完全解説で、lambdaの全機能は、ほぼ網羅したと思う。lambdaの文法は、それほど難しくはないと思うのだが、難しいと感じる人がいるらしい。とくに、キャプチャが理解できない人がいるそうだ。そこで今回は、lambdaの根を解説してみようと思う。 lambdaというのは、そもそも関数オブジェクトのシンタックスシュガーなのである。例えば、 namespace hito { template< class InputIterator, class Function > Function for_each( InputIterator first, InputIterator last, Function f ) { for ( ; first != last ; ++first ) f( *first ) ; return f ; } } int main() { st