タグ

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

  • 関連タグはありません

タグの絞り込みを解除

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

  • C++ FAQ

    From Marshall Cline: Bjarne Stroustrup, Herb Sutter, Andrei Alexandrescu, Pearson / Addison-Wesley Publishers and I collaborated to create a new C++ Super-FAQ! It's a team effort, with huge contributions from each of us and with amazing support from dozens of brilliant editors. The result is "awesomer" than ever! I originally wrote/published the FAQ in 1991 and now look forward to this new phase -

  • イテレータ - Standard Template Library プログラミング

    イテレータ C/C++でのプログラミングで避けて通れないのが"ポインタ"です。ポインタは配列の要素を順にアクセスすることができます: // 配列の要素をプリントする。 void print_array(int* a, int N) { int* p = a; for ( int i = 0; i < N; ++i ) { cout << *p << ' '; ++p; } cout << endl; } int a[10]; print_array(a,10); 同様に、配列とは異なるデータ構造である単方向リストの内容をプリントするには、 struct slink_of_int { int data; slink_of_int* next; // 次のリンク(末端には0を設定) }; // リストの要素をプリントする void print_list(slink_of_int* p) { w

    agw
    agw 2011/09/10
    各種イテレータが要求するメソッドを掲載している。
  • 『イテレータを自作するには?』

    C++ フリーでぷろぐらみんぐ 逆引きリファレンス。 C++のやりたい事から引ける逆引きメモを書いています。 何かコメントなどいただけると嬉しいです! C++では、STLを使用すると特にイテレータが大活躍ですね(^^) 自分でイテレータを作成する必要にせまられることはないかと思います。 でも、独自のイテレータを作成するにはどうしたらよいかは興味深いと思います。 さて、ここでは、char*のイテレータを作成しようと思います。 あまり意味の無い試みです。 なぜなら、アルゴリズムの、copyやreverseなど様々な関数テンプレートはおそらくchar*の型をそのまま扱えるからです。 ま。遊びなので 【サンプル】 #include <cstdlib> #include <iostream> #include <iterator> #include <algorithm> #include <sst

  • Sign in - Google Accounts

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    agw
    agw 2011/09/02
    関数オブジェクトを幅広く解説している。
  • Binder Problem and Reference Proposal (Revised)

    agw
    agw 2011/09/02
    StroustrupによるReference to Referenceへの提言。
  • 関数アダプタ バインダ - (void*)Pないと

    http://www.geocities.jp/ky_webid/cpp/library/025.html 関数アダプタとは他の関数オブジェクトや値を、関数オブジェクトに組み合わせて新しく作成する関数オブジェクトということらしい。 これだけじゃ何のことかさっぱりわかりませんね。というわけで実際の処理を見ていきたいと思います。 関数アダプタを作るためには標準で提供されているstd::binary_functionやstd::unary_functionから派生しないといけないそうです。 因みに定義は以下になります。 template <class Arg, class Res> struct unary_function{ typedef Arg argument_type; typedef Res result_type; }; template <class Arg1, class Ar

    関数アダプタ バインダ - (void*)Pないと
    agw
    agw 2011/09/02
    ostream_iteratorの使用例。
  • いやなブログ: STL のバインダとリファレンスへのリファレンス問題

    STL のバインダとリファレンスへのリファレンス問題 STL に含まれる bind1st と bind2nd は for_each や find などの関数と組み合わせて使うと便利です。しかしながら、リファレンス (参照) を引数に取る関数の引数をバインドすることはできないので注意が必要です。 注意が必要ですと言いつつ、自分がこの問題を知らずにはまりました。次のようなコードで問題は起きます。 #include <algorithm> #include <functional> #include <iostream> #include <string> #include <vector> using namespace std; void print(const string& s1, const string& s2) { cout << s1 << ": " << s2 << endl;

  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Tech Blog

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • C++の基礎

    Codian(こーでぃあん)は、Visual C++ 6.0を使用したC++言語によるプログラミングの解説を掲載しているコンテンツです。 ヘルプの見方やポインタといった基的なものから、DLLやシェルエクステンションといったマニアックなものまで、他では見られない情報を取りそろえております。 サンプルプログラム、解説共にVisual C++ 6.0用ですので、最近のVisual Studio.Netには対応しておりません。ご了承ください。 ちなみに「Codian」というタイトルは、「コード(プログラム)に従う人種」という意味から付けられたものです。

  • STL & iostream primer

    C++ コンパイラに必ず付属している「標準 C++ ライブラリ」、その根幹を成すSTL と iostream 。 素晴らしい魅力を持つこのライブラリは、正しい理解をされることなく地に埋もれようとしています。それは非常にもったいないことです。このライブラリを使いこなすことで、皆さんの「 C++ プログラミングに対する概念」は大きく変わることでしょう。そして、より強固で短く、読みやすいプログラムを組めるようになるはずです。このライブラリは、それだけのポテンシャルを持っているのです。 「 STL & iostream 入門」は、 STL と iostream の「質」を伝えます。それを知ることで皆さんは、うわべだけの使いやすさじゃない、「物のライブラリ」というものに気付くことでしょう。そして、皆さんの C++ プログラマーとしてのレベルは必ず上がるはずです。 自分が書いた C++ プログラム

  • STL Samples

    agw
    agw 2011/04/29
    実装例が簡素でかつ分かりやすい。
  • STLのqueueとかstackとかが好きになるたった一つの方法 - 神様なんて信じない僕らのために

    全国1,000,000人のSTLファンのみなさんに朗報です。 STLのqueueとかstackとか使いにくくないですか? あれって、中身はlistとかqueueとかvectorのくせに使いにくくないですか? 触れるインターフェイスが少なすぎ、とか思ってないですか? 渡したコンテナを触れないときどうしてますか? 1.渡すコンテナを独自で作成し、インターフェイスは実装し中身は気合いでいじる できますが、queueやstackで渡されるコンテナは「コピー」なので相当醜いことになります。却下。 2.queueやstackをprotected継承してインターフェイスを拡張する 正解!! 移植性はないけど正解!! 移植性がないのはSTLには環境によって独自の実装があるからです。 しかし、多くの場合ちょっと書き換えるだけでこのテクニックが使えます。 これを使うと、 swapができるqueue(シュリンク

    STLのqueueとかstackとかが好きになるたった一つの方法 - 神様なんて信じない僕らのために
  • std::sort

    template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last); template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp); Sorts the elements in the range [first,last) into ascending order. The elements are compared using operator< for the first version, and comp for the second. Equi

    agw
    agw 2011/04/04
    比較関数を直感的に理解出来るエントリ。
  • std::swap、std::max、std::min - (void*)Pないと

    http://www.geocities.jp/ky_webid/cpp/library/034.html 補助的な関数です。 std::swap関数 値の入れ替えをするだけの関数です。 #include <iostream> #include <algorithm> using std::cout; using std::endl; int main () { int a = 10; int b = 20; cout << "a = " << a << endl; cout << "b = " << b << endl; std::swap(a,b); cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; } $ main a = 10 b = 20 a = 20 b = 10 std::max関数 渡され

    std::swap、std::max、std::min - (void*)Pないと
  • std::accumulateの練習

    std::accumulateの練習 要素の合計値を求める #include <algorithm> //generate #include <numeric> //accumulate #include <vector> //vector std::vector<int> v; //vに値を設定する std::generate(v.begin(), v.end(), rand); //要素の合計値を求める //3番目の引数は初期値 int sum = accumulate(v.begin(), v.end(), 0); 文字列を結合する //ランダムな文字を返す struct Generator { string operator ()() { static const string s = "abcd"; return s.substr(random(s.length()), 1);

    std::accumulateの練習
  • How to use std::sort with a vector of structures and compare function?

    agw
    agw 2011/01/15
    "Instead of returning –1, 0 or 1, this function is expected to return a bool value indicating whether the first element is less than the second."
  • C++: 構造体を格納したSTLコンテナに対してソート・探索・削除などのアルゴリズムを適用する

    C++に慣れている人にとっては当たり前のことかもしれないけど、あまりC++に親しんでいない場合、構造体を格納したSTLコンテナに対してアルゴリズム<algorithm>を有効に活用していないかもしれない。そこで、構造体を格納したvectorなどのSTLコンテナでソートや探索、削除などのアルゴリズムの利用方法を書いておく。 struct A { int n; int* p; }; 上記のような構造体はよく見かける形だと思う。構造体Aに整数型変数のnとポインタ型変数のpがあり、例えばnに配列の要素数、pにその配列を確保したりする。こういった構造体を以下のようにvectorなどのSTLコンテナを使って格納することは多々ある。 vector<A> A_list; これで構造体Aをコンテナに格納できるわけだ。ところで、STLコンテナを使用する一つの理由として便利なアルゴリズムが利用できることが挙げら

  • std::sortのメモ

    業でvectorをあんまり使わないので(使えないので)、忘れないようにvectorのソート方法のメモ。 vectorコンテナをソートする場合は、stlのalgorithmのstd::sort(クイックソート)を使うと簡単にできる。 下記は、 x,y,z情報を持ったTestPointクラスをz値が小さい順にソートする。 場合の例。 ◆比較用のクラスを使用してソート #include<algorithm> #include<iostream> #include<vector> class TestPoint { public: float x; float y; float z; }; //比較用クラス class CompPoint { public: bool operator()(const TestPoint &a,const TestPoint &b) const{ if(a.z

    std::sortのメモ
    agw
    agw 2011/01/15
    std::sortの用例。
  • はてなブログ | 無料ブログを作成しよう

    東横インの朝バイキング、毎回スゲー並ぶ ビジネスホテルの東横インによく泊まる人にはおなじみであろうが、どのホテルに泊まっても宿泊客に対して朝バイキングの会場が小さすぎて毎朝ほぼどこの朝会場でも朝イチには長蛇の列が出来ている。 この朝を待つ長い列が耐えられない場合は東横インと決別するか…

    はてなブログ | 無料ブログを作成しよう
  • https://support.microsoft.com/en-us/help/143208/

    agw
    agw 2011/01/14
    VCにおけるstd::min、std::max問題。本家の情報だが、情報量は薄い。