タグ

c++に関するmoozのブックマーク (187)

  • Welcome to yk55.com 网站正在建设中!

    买域名就到“爱米人” 我们有几十万个精品域名:aimiren.com

    mooz
    mooz 2010/10/30
    typeid でマングリングされたクラス名を取得. cxxabi.h のデマングル関数を使ってクラス名に.
  • privateなメンバ変数にアクセスする - (void*)Pないと

    たとえメンバ変数をprivateにしていたとしてもポインタを経由すればアクセスできてしまう。 #include <iostream> using std::cout; using std::endl; class Foo { private: int num1; int num2; public: void output () { cout << num1+num2 << endl; } }; int main () { Foo foo; int* p = reinterpret_cast<int*>(&foo); *(p) = 10; // Foo::num1にアクセス *(p+1) = 6; // Foo::num2にアクセス foo.output(); return 0; } $ main 16馬鹿とハサミは使いようと言いますかなんというかC++におけるポインタは伝家の宝刀ですな。

    privateなメンバ変数にアクセスする - (void*)Pないと
    mooz
    mooz 2010/10/30
    インスタンスのアドレスを取得して, キャスト.
  • (void*)Pないと

    uuidモジュールで楽に生成できます import uuid ustr = uuid.uuid4() print(ustr) print(ustr.hex) $ py main.py 33536e0f-aef5-4dfc-9d5d-7c96c5139f0a 33536e0faef54dfc9d5d7c96c5139f0a 通常コマンドライン引数を扱うにはsys.argvを使います。 import sys args = sys.argv count = args[1] print(count) $ py main.py 10 10とてもシンプルですね。 ただ実際にちゃんとしたプログラムを組む場合、例えばコマンドライン引数が渡されなかった場合に例外にしたり、もしくはデフォルト値を設定したり、ハイフン始まりのオプション引数を用意したり、そういうことをやろうと思うとどんどん複雑になっていきます。

    (void*)Pないと
    mooz
    mooz 2010/10/30
    C++ のあれこれ
  • ロベールのC++教室 - 第40章 シリアル入り -

    mooz
    mooz 2010/10/29
    テンプレートの引数には整数定数が指定できる
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    mooz
    mooz 2010/10/28
    クラス内, 関数内にも書ける.
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    mooz
    mooz 2010/10/28
  • テンプレートの部分特殊化 - Wikipedia

    テンプレートの部分特殊化 (Partial template specialization)は、C++の用語で、テンプレートにおいて、特定のテンプレート実引数が与えられたときに、元と異なる定義を使用させるようにする仕組みである。 テンプレートと明示的特殊化[編集] テンプレートはメタクラスである。つまりコンパイラに対してどのようなクラスを作るかを指示したある種の抽象データ型であると言える。たとえばテンプレートであるvector(動的配列)をプログラマが使うときには、vector<int>、vector<string>などのようにデータ型を指定して実体化する。実体化されたvectorは、コンパイラの生成したオブジェクトコードの中ではそれぞれ別のコードが生成され、それぞれ別のクラスとして扱われる。 もしテンプレートクラスは特定のデータ型を指定して使われることが多いと知っており、そのデータ型の場

    mooz
    mooz 2010/10/28
  • 関数オブジェクト - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2024年4月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2024年4月) 独自研究が含まれているおそれがあります。(2024年4月) 出典検索?: "関数オブジェクト" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL 関数オブジェクト(かんすうオブジェクト、英: function object)は、プログラミング言語において、関数(サブルーチンまたはプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)[要出典]。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指

    mooz
    mooz 2010/10/23
    状態を持てる
  • はてなブログ | 無料ブログを作成しよう

    南関東の「いろんなところから富士山が見える」状況に驚きつづけている 大阪から東京に引っ越して30年以上経つが、じわじわと蓄積されてきた驚きがついに閾値を超えたので筆を執った次第である。正確には「ポメラ DM250を起動してmenuキーを押して新規作成を選んだ」のだが、ポメラを持っていなかったら、さらに驚きが蓄積されていないと…

    はてなブログ | 無料ブログを作成しよう
    mooz
    mooz 2010/10/23
    ファンクタを使う
  • C++の4つのキャストを使いこなす

    イントロダクション C++ には全部で4種類のキャストがあります。これらの使い方をしっかり確認しておこうというのが今回の主旨です。いきなり題に入ってもいいのですが、まずは C 言語のキャストをおさらいしてみましょう。 (type-name) cast-expression C のキャストにはこの1つの形式しかありません。ややこしいですね。1つしかないのに何がややこしいかって?見た目は1つの形式しかないのに実際の動作は何通りもあるのがややこしいんです。ざっと考えただけでも次の3つの使い方が思い浮かびました。 float average(const int* array, int size); int n = (int) average(array, size); void * get_data(int nID); char * p = (char *) get_data(2); int g

    mooz
    mooz 2010/10/23
    cast, RTTI
  • そこはかとない現実と二次元を描く。 C++

    mooz
    mooz 2010/10/23
    シングルトンの実現方法. シングルトン取得メソッドの中で static に宣言してしまう.
  • C++ Labyrinth

    マルチスレッドにおける singleton singleton パターンというのは、あるクラスのインスタンスが、プログラム全体の中で、 ただ一つだけ存在するように制限したいというような場合に用いられる。たとえば、 MFC を使った Windows プログラミングでは、しばしば、 といったコードにお目にかかるが、このやり方では、他の誰かが、CFooApp の 別のインスタンスを作ることを明示的に禁止することはできない。 では、どうするか。すぐに思いつくのは、インスタンスの生成をただ一つの 関数だけに許可し、数の管理は、その関数に任せる、というやり方である。 インスタンスの生成をただ一つの関数だけに制限するには、クラスの コンストラクタを private にした上で、その関数を、クラス内の静的メンバ関数に するか、あるは、クラスのフレンド関数にすればよい。 class Foo { public

    mooz
    mooz 2010/10/23
    マルチスレッドにおけるシングルトン.
  • Xerces-C++ XML Parser

    Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs. For an introduction to programming with Xerces-C++ refer to the Programming Guide. Xerces-C++ is faithf

    mooz
    mooz 2010/10/21
    C++ 用 XML パーサ.
  • 浪漫の求道者:GoogleTestがかなりいけてる その2

    GoogleTest Assertions まとめ】 ↓のWikiから、Assertionを和約(適当)してまとめてみる。 http://code.google.com/p/googletest/wiki/GoogleTestPrimer http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide 注)勢いで書いたので、自分に都合の良い所だけ抽出、意訳しています。 あと、実はバージョン1.2.0の時に訳したもののコピペです。 基 Fatal assertionNonfatal assertionVerifiesASSERT_TRUE(condition);EXPECT_TRUE(condition);condition is trueASSERT_FALSE(condition);EXPECT_FALSE(condi

  • 紫ログ:C++のテストフレームワークを試食 - livedoor Blog(ブログ)

    TopCoderの為に少しやる気になってきたところで、Macでフリーで使える C++ のテストフレームワークをいくつか試してみたのでメモ。 CppUnit - C++ Port of JUnit CxxTest googletest - Google C++ Testing Framework Boost.Test CppUnitはテストの記述が若干面倒な気が。表示はシンプルで悪くない。 CxxTestはインストール方法が他と違って少し悩んだが、記述量が少なくて取っつきやすかった。 googletestは記述量が少なめで、赤と緑のカラー表示コンソールで、マクロの種類も豊富。ASSERT マクロと EXPECT マクロの対応も分かりやすい。但し、出たばかりで日語での情報が少ない。 Boost.Testは普段Boostに慣れ親しんでいるなら良いかも。マクロの種類は多め。 とりあえず、goog

  • googletest - Google C++ Testing Framework - Google Project Hosting

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    googletest - Google C++ Testing Framework - Google Project Hosting
  • ANN - Approximate Nearest Neighbor Library

    ANN is a library written in C++, which supports data structures and algorithms for both exact and approximate nearest neighbor searching in arbitrarily high dimensions. In the nearest neighbor problem a set of data points in d-dimensional space is given. These points are preprocessed into a data structure, so that given any query point q, the nearest or generally k nearest points of P to q can be

    mooz
    mooz 2010/10/16
    approximate nearest neighbor searching in arbitrarily high dimensions
  • C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう

    C++0xになると、C++03でごちゃごちゃした部分がだいぶ すっきり書けるようになるので、C++0xでの入門はこんな感じになるよー、 という気持ちで書きました。 1. Hello World C++0xでの入出力には、IOStreamというものを使用します。 <<演算子でどんどんつないでいきます。 以下のプログラムの読み方は 「標準出力(cout)に"Hello World"という文字列と、改行(endl)を出力する」 です。 #include <iostream> int main() { std::cout << "Hello World" << std::endl; return 0; } Hello World coutとendlを使用するには、 #include <iostream> のように、という標準ライブラリのファイルを読み込む必要があります。 2. コメント 行コメント

    C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう
    mooz
    mooz 2010/10/16
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    mooz
    mooz 2010/10/11
    ostream_iterator, istream_iterator
  • StringPiece というライブラリの話 - 兼雑記

    例えばこう、ディレクトリの名前とその中のファイル名を / でくぎって結合する関数を書くとします。引数が std::string でも使いたいし const char* でも使いたい、ということで、たいていは void JoinFilePathStr(const string& dir, const string& base, string* out) { out->clear(); out->append(dir); out->push_back('/'); out->append(base); }なんてのを書くんじゃないかと思います。この関数で問題になるのは const char* を渡すと不要な string object が一度できることで、敬虔な C++ 屋さんだと、 void JoinFilePathStr(const string& dir, const char* base,

    StringPiece というライブラリの話 - 兼雑記
    mooz
    mooz 2010/10/09