タグ

2011年9月21日のブックマーク (12件)

  • C++ Topic

    constは内部リンケージ C++でCのrealloc( )に相当する関数は? NULLより 0 の方がいい スマートポインタ 菱形多重継承の対処 コピーコンストラクタとデフォルトコピーコンストラクタ Koenigルックアップ const は内部リンケージ (プロ言§9.2) constはデフォルトで内部リンケージだそうです。ですから、Cで言うと "static"が付与されているイメージになります。C++では static も少し別の 意味をもつことになりますので、混乱しないように。 ですから、下記2ソース中のiFooは衝突しません。OKということです。 ---foo.cpp--- const int iFoo = 10; ... ---bar.cpp--- const int iFoo = 20; ... 私がconstキーワードに興味を持ったのは、Stroustrup

  • 部分的なテンプレート実装

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 Bobby Schmidt Microsoft Corporation July 9, 2002 この資料では、 Microsoft® Visual C++® .NET にまだ不足している C++ 標準に準拠するために必要な多種多様なテンプレート機能について説明します。 不足している標準準拠機能の部分的な一覧は、 Visual C++ ドキュメントで参照できます。 その一覧は、 「Visual C++ 実装が C++ 標準に準拠していない既知の点の一部」を示しています。 ここで重要な言葉は "一部" です。 そう、"すべてではない" のです。 そういうわけで、公開された一覧には掲載されていない、 いくつかの標

    部分的なテンプレート実装
  • 複数のテンプレート引数を持つ場合の特殊化 - Take me away

    やりたいこと 以下のようなテンプレート引数を2つ取るテンプレートクラスがあったとする. #include <stdio.h> template<typename A, typename B> class XXXX { public: void func() { printf("General\n"); } int func2() { return 100; } };ここでテンプレート引数 A が int の時だけ,func() の動作を変えたい.つまり特殊化したい. というのやりたいこと. 方法1 (コンパイルエラー) テンプレート引数Bを残したまま,Aだけをintに特殊化した関数を付け加えてみる. template<typename B> inline void XXXX<int, B>::func() { printf("Special\n"); }これは以下のようエラーが出てコンパイ

    複数のテンプレート引数を持つ場合の特殊化 - Take me away
  • STL マスター・ノート

    より詳しい解説ノートです。 基的な コンテナ/反復子/関数オブジェクト/アルゴリズム に的を 絞って詳しく解説しています。 stack/queue/priority_queue/bitset/string/rope/valarray/complex については、 また後日、STLプロフェッサー・ノートの方で詳しく解説します。 初歩的な説明は全部とっぱらっていますが、 それでもやっぱり見にくいです。 それから、SGI社のSTLについてはcompose辺りの説明が若干違います。 〔STL-コンテナ〕 ■コンテナ共通の項目 全てのコンテナクラスは、デフォルトコンストラクタ、コピーコンストラクタ、デストラクタを提供する。 また、要素の範囲を指定して初期化を出来る。 ◆コンストラクタによる初期化のサンプル 1) コンテナの要素から初期化をする std::list<int> l ; <省略> std

  • C/C++ - 言語仕様編 第10回 〜テンプレート〜

    テンプレート関数 宣言 int f(int n); は、int 型変数 n を受け取り、int 型変数を返す。 C++ では、オーバーロードによって、この f(int n); 関数と、 double f(double v); C f(C c); などといった関数は区別されるが、もし、この3つの振る舞いが全く同じである場合、 すなわち、f(int n) や f(double n) で使用される演算子が、適切にオペレータ・オーバーロードされている 一般のクラス T に対しても動作させられるようにする場合、これを、 template<typename T> T f(T t); として代表させる事ができる。この f をテンプレート関数という。また、T をテンプレート引数という。 呼び出し テンプレート関数 f を使用する場合は、そのテンプレート引数 T に対して、型を指定し、 f<C>(t1);

    agw
    agw 2011/09/21
    一通り網羅している。良エントリ。
  • std::map - insert 時の無駄な find を防ぐ - yanaken@phper

    std::map 使用時に、 「挿入させたいキーが既に登録されているかチェックしたい」 ってことがよくある。 そんな時は insert の戻り値を使用する。 std::map<int, char> hige; hige.insert(1, 'a'); ... std::map<int, char>::_Pairib pib = hige.insert(1, 'b'); if (!pib.second) { // キーが重複している } [説明] _Pairib のデータ構造を覗いてみる。 // _Pairib = _Pair + i(terator) + b(ool) typedef pair<iterator, bool> _Pairib; _Pairib::iterator // insert 時のキーの iterator が格納 _Pairib::bool   // 新規登録ができた

    std::map - insert 時の無駄な find を防ぐ - yanaken@phper
  • Google Voiceはやっぱりすごかった - @IT

    Web業界は電話関連ビジネスを飲み込もうとしているのではないか。もう1年以上も前になるが、2010年5月に米国に出張した際に、そういう印象を受けた。といっても、VoIPのことではない。電話帳がSNS内のソーシャルグラフで置き換えられるということとも、ちょっと違う。電話の音声サービス全般のことだ。これは、VoIP普及以上にインパクトのある技術トレンドなのではないかと思うのだ。 そう感じた理由の1つ目は、米国で一般ユーザー向けにも提供が始まった電話・音声サービス「Google Voice」を使ってみて、その使い勝手の良さに舌を巻いたこと。今さら、Google Voiceがどうしたの? と思う人もいるかもしれないが、改めて検索してみて、どうも日にはGoogle Voiceのインパクトが全く伝わっていないように感じている。 もう1つは、Twilioというベンチャー企業の存在を知ったことだ。久しぶ

  • C++ Templates FAQ

    agw
    agw 2011/09/21
    良文書。
  • std::mapの使い方

    Collada読み込みにおいて、stlのmapを使ったほうがよさそうな場面に出くわしたので、使い方をチェック。キーはstd::stringが手っ取り早そう。要素の挿入・参照方法は、イテレータを使用しないシンプルなものを採用した。 #include <iostream> #include <string> #include <map> using namespace std; int main(int argc, char **argv) { map<string, int> tbl; // 挿入 tbl["hoge"] = 0; tbl["piyo"] = 10; tbl["fuga"] = 20; // 参照 cout << tbl["hoge"] << endl; cout << tbl["piyo"] << endl; cout << tbl["fuga"] << endl; ret

    agw
    agw 2011/09/21
    テンプレート関数内でのイテレータ記述に関する注意点が記載されている。
  • Não Aqui! » C++テンプレートのFAQ

    あるコードを書いていて,Visual C++ 2008ではコンパイルが通るのに,g++では通らないケースで悩む.Visual C++ 2008はtypenameキーワードまわりが緩く,g++では付け忘れを大量に指摘されるのが常だ.そんなVisual C++ 2008のぬるま湯に浸かっているためか,今日は以下のようなコードがコンパイル出来なくてびっくりした. template <class T> class base { public: T var; }; template <class T> class derived : public base<T> { public: void set(const T& x) { var = x; // error: `var' undeclared. } }; int main(int argc, char *argv[]) { derived<in

    agw
    agw 2011/09/21
    テンプレートクラスを継承したときの注意点について記載。
  • サービス終了のお知らせ

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

  • カリフォルニアの消費税: Sunny California Diary

    では消費税を上げるとか上げないとかいろいろな議論が盛んに行われているらしい。ご存知のように、ここカリフォルニアでは、日の消費税にあたるセールスタックス(Sales Tax)が導入されてる。複雑なのが、その税率。日と違って、税率は州ごとに違う。州が同じでも、地域によってこれまた違う。だから、ここロサンゼルスエリアでは、ロサンゼルスカウンティだと8.25%なんだけど、オレンジカウンティは7.75%。隣り合ってる地域なのになんと0.5ポイントも税率に差がある。 日とさらに違うところは、料品には消費税がかからないということ。でも、レストランで事する場合はセールスタックスがつく。そんな話をしていたら、アメリカに長く住んでいる日友人からこんな話があった。 「セールスタックスって、料品にはつかないでしょう。それと似た理由で、ファーストフードレストランの場合、店内で事する(eat-i

    agw
    agw 2011/09/21