タグ

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

  • 関連タグはありません

タグの絞り込みを解除

ProgrammingとC++とdeferredに関するagwのブックマーク (154)

  • C++マニアック,C++言語,STL,sort,ソート,algorithm,アルゴリズム,使い方,pred,predicate,プレディケート,述語

    C++マニアック C++言語,STL,sort,ソート,algorithm,アルゴリズム,使い方,pred,predicate,プレディケート,述語 ページの末尾へ トップページへ sort(ソート) このページでは STL のアルゴリズムである sort の使い方について解説します。 基的な使い方 並べ替えの判断基準を変更する 大小関係の比較について プレディケートのバラエティ 英文字文書を読んで、文字数の頻度順にソートする例 身長や体重など複数の基準でソートする例 基的な使い方 ページの先頭へ sort は、いわゆる並べ替えを行うアルゴリズムです。並べ替えることが出来るのは、通常の配列や、vector などのランダムアクセスイテレータが使えるコンテナの中身と言うことになります。list などは、ランダムアクセスできないので、ソートできませんが、list にはそ

  • numeric_limitsはデフォルトで意味無い値を提供する - ::Eldesh a b = LEFT a | RIGHT b

    C++のにある numeric_limitsテンプレート は, 実装依存のarithmetic typeに関する性質を提供します. テンプレートとは言っても, 実装依存の値を一般化して求めるなんて出来ないので, (というかそれを提供するのが目的) それぞれの型についての特殊化を定義してあります. 使ってみる. #include <iostream> #include <limits> using std::cout; using std::endl; #define PRINT(expr) cout << #expr << ": " << (expr) << "\n" int main () { PRINT(std::numeric_limits<int>::min()); PRINT(std::numeric_limits<int>::max()); PRINT(std::numeric

    numeric_limitsはデフォルトで意味無い値を提供する - ::Eldesh a b = LEFT a | RIGHT b
  • 2004-10-02

    最近C++を使う時間が長いのでががーっと C++批判文章を書き上げてみる…。 (注:以下の文章において、C言語とはC/C++をさすものとお考えください) gotoは今から30年以上も前のダイクストラ先生による撲滅運動の 甲斐もあってかどうなのか、今日では良くないものの代名詞のように なっている。良くないということの主な理由はプログラムの流れが 見えにくくなる、等のようなのだが、実際のところどの程度のものかは よく分からない。C言語において、例えばループ構文を使わずにすべてを gotoでまかなおうとするとこれはほとんど自明に、確かに大変である。 例えばfor文なら、 for (A;B;C) body というものは、これを形式的に A _continue_for: if (B) goto _break_for; C goto _continue_for; _break_for:; このように変

    2004-10-02
  • C++ tips 3 カンマ演算子編

    主に cppll ML でご紹介してきた tips をC++の仕様をより掘り下げた形でまとめ直してみました。 今回はカンマ演算子にフォーカスした内容です。

    C++ tips 3 カンマ演算子編
  • Why are elementwise additions much faster in separate loops than in a combined loop?

    Suppose a1, b1, c1, and d1 point to heap memory, and my numerical code has the following core loop. const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } This loop is executed 10,000 times via another outer for loop. To speed it up, I changed the code to: for (int j = 0; j < n; j++) { a1[j] += b1[j]; } for (int j = 0; j < n; j++) { c1[j] += d1[j]; } Compiled on Micr

    Why are elementwise additions much faster in separate loops than in a combined loop?
  • Microsoft Learn: Build skills that open doors in your career

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situ

    Microsoft Learn: Build skills that open doors in your career
  • STLのalgorithm,functorの使い方. - pyopyopyo - Linuxとかプログラミングの覚え書き -

    STLのalgorithm,functor 関連をシンプルに整理してみました. 以下,文中の op は関数オブジェクト T, T1,T2 はtypename a, b はT型の定数 x, y はT型の変数 or 定数 Ite,first, last はイテレータ とします. equal_to, not_equal_to, greater, less, greater_equal, less_equal 書式 生成されるコード greater()(x, y) x > y less()(x, y) x < y greater_equal()(x, y) x >= y less_equal()(x, y) x <= y equal_to()(x, y) x == y not_equal_to()(x, y) x != y bind1st, bind2nd 書式 生成されるコード bind1st(

    STLのalgorithm,functorの使い方. - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • メンバ関数の部分特殊化がしたい - akihiko’s tech note

    C++ でメンバ関数を部分特殊化しようとすると(例えばテンプレートクラスのテンプレートメンバ関数を,ある特定の型について特殊化する),コンパイルエラーとなる.gcc なら "error: invalid use of incomplete type" だとか, "error: enclosing class templates are not explicitly specialized" などのエラーが発生する.しかし,現実には,部分特殊化したいことも多い.そこで,やや強引な解決策を実装してみた. 問題提起 template <typename T1, typename T2> struct TTest { T1 ex() { ... } }; template <> void TTest<void, void>::ex() // OK { ... } これは,メンバ関数 TTest::

    メンバ関数の部分特殊化がしたい - akihiko’s tech note
  • std::string の正体(gcc-4.4.3)と細かい話 - やた@はてな日記

    # 環境依存な内容な上,無駄に細かい話なので,「そういうこともあるかもねー」くらいに流しちゃってください. (追記 2011-01-11)新しい規格では std::string の Copy on Write(CoW: 書き込み時に複製)が実質禁止になるとのことです.後,gcc 4.5 の時点で CoW はやめてしまうみたいですし,「そんな時代もあった」くらいに軽く流しちゃってください.id:gintenlabo さん,コメントありがとうございます. (追記の続き)個人的には,std::string の CoW 動作は挙動が分かりにくくなるので止める方に賛成です.でも,std::vector なんかを拡張するときはどうするのかな…?コピーしてしまうのか,swap() を使うようにするのか…. (さらに追記 2011-01-11)おおっと,ムーブコンストラクタにムーブ代入演算子なんてものが…

    std::string の正体(gcc-4.4.3)と細かい話 - やた@はてな日記
  • M.Kakumotoなホームページ - 仮想継承について

    前回、多重継承を説明した際に、メンバ名が重複することによるあいまいさの問題について触れましたが、さらに基底クラスそのものが重複する場合があることを説明します。次のクラス定義はその一例です。 class cA { public: int ia; }; class cB1 : public cA { public: int ib1; }; class cB2 : public cA { public: int ib2; }; class cC : public cB1, public cB2 { public: int ic; }; /* [ ia ][ ib1 ][ ia ][ ib2 ][ ic ] | cA | | cA | | cB1 || cB2 | | cC | */ ia が二つあることに気付いたでしょうか。先頭にある ia は cB1::ia であり、次の ia は cB2::

  • EffectiveC++入門 ~ 第4章 クラスと関数:その設計と宣言 ~

    ■ 課題 クラスインターフェースとは、そのクラスを使うプログラマがアクセスできるインターフェースのこと。インターフェースは、特に理由がない限り関数となる。大きなインターフェースは以下のような問題を抱える。 ・ 関数の数が多ければ多いほど、クライアントにとっては理解し難いものになる。 ・ 保守が難しくなる。重複コードの保守、インターフェースの一貫性の維持、ドキュメント化が大変になる。 ・ 大きなインターフェースは、ヘッダファイルが長くなり、コンパイル時間に大きな影響を与える。 ■ 解決 クラスインターフェースはできる完全かつ最小限になるまで、よく設計を吟味する。 ■ 補足 私見だが、この当たり前のようなことをできるプログラマは残念ながら、かなり少ない。 #include <iostream> using namespace std; class Rational { public: __Ra

  • Boost

    Learn arrow_drop_down News Learn Community Libraries Releases news learn community libraries releases User Guide Contributor Guide Formal Reviews

  • Template typedefs - What's your work around?

    C++ 0x has template aliases (sometimes referred to as template typedefs). See here. Current spec of C++ does not. What do you like to use as work around ? Container objects or Macros ? Do you feel its worth it ?

    Template typedefs - What's your work around?
    agw
    agw 2011/10/06
    templateとtypedefのワークアラウンド。
  • Typedefテンプレート

    注意 このページにアクセスするには、承認が必要です。 サインインまたはディレクトリの変更を試すことができます。 このページにアクセスするには、承認が必要です。 ディレクトリの変更を試すことができます。 Robert Schmidt Microsoft Corporation 2000 年 8 月 3 日 typedef(型定義)を使うと、特殊化されたクラス テンプレートなど、任意に定義した複雑な(名前なしも可)型の名前付きエイリアスを作成できます。たとえば、次のエイリアス typedef std::vector<int> bag_of_int; を使うと、次のようにコードを記述できます。 std::vector<int> x1; // vector of ints bag_of_int x2; // ditto ここで、 std::vector<int> という型は、2 つのパラメータを持

    Typedefテンプレート
    agw
    agw 2011/10/06
    templateとtypedefの併用について。template<typename T> typedef std::vector<T, my_allocator<T>> bag_of<T>は許されていない。その回避策を解説。
  • template typedef support in g++ ? - Post.Byes

  • サービス終了のお知らせ

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

  • キャスト演算子

    動的キャスト C++では、C言語の型キャストをそのまま使うことができますが それ以外に、C++特有の型キャスト演算子が用意されています その中でも、とくに重要なのが dynamic_cast でしょう この演算子は、C++のポリモーフィッククラスに対応しているもので 実行時型変換を行い、有効であれば型を変換します dynamic_cast < type-id > ( expression ) type-id には、変換する目的の型を指定します 必ずポインタ型か参照でなければいけません expression は、目的の型に変換する式を指定します type-idがポインタ型ならポインタ、参照ならば変数を指定します #include<iostream> using namespace std; class Kitty { public: virtual void func() { cout <<

  • C++ の型変換 - IT戦記

    http://www.kuzbass.ru:8086/docs/isocpp/special.html#class.conv クラスの型変換はコンストラクタと型変換関数を使って定義できる。これらの型変換は、ユーザー定義型変換と呼ばれ、暗黙的型変換、変数初期化子、明示的型変換に使われる。 ユーザー定義型変換は、型変換の定義が曖昧じゃないときにだけ適用される。型変換は、アクセス制御規則(private, public, protected)に従う。アクセス制御規則は、曖昧さの解決のあと適用される。 もっとも使われるユーザー定義型変換は、単一値への暗黙的型変換だ。 class X { // ... public: operator int(); }; class Y { // ... public: operator X(); }; Y a; int b = a; // NG: X().oper

    C++ の型変換 - IT戦記
  • #pragma twice 378 Version 17.23 スマートポインタ

    Version 17.23 スマートポインタ 「前回は delete で解放する方法についていくつか説明しました」 『なんかトリッキーな感じだったんだけど……』 「まぁ、メモリを自由に操作できる C++ 言語だから、それだけ自由度が必要 ってところかな」 『自由すぎ……』 「さて、今回はもうひとつの問題について」 ・ポインタをいつ解放するか ・使用中に解放してはいけない(存在しない変数を使ってしまう) ・解放し忘れてはいけない(メモリリークになる) ・解放前にアドレスを上書きしてはいけない(同上) 『これは結構大きな問題よね』 「この問題を解決するための方法のひとつが【スマートポインタ】というも のです」 『やせてるポインタ?』 「違います。スマート、っていうのは利口な、っていう意味」 『あー、そういえばそういう意味で使うことあるよね。スマートなやり方と か』 「そうそう、そっちの意味。ス

  • スマートポインタ « Stop Making Sense

    August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) スマートポインタとは? 特に難しいことはありません。 「動的に確保されたオブジェクトを所有し、オブジェクトが不要になった時点で自動的に破棄してくれる、賢い(スマート)ポインタ」です。 ここでは、STLのスマートポインタ(auto_ptr) について説