タグ

STLに関するyowanoのブックマーク (13)

  • Momma's Wiki: プログラミングでのメモ - プログラミングで雑多な話 gcc4.1で解釈が厳密になったらしく、クラス内...

    error: extra qualification gcc4.1で解釈が厳密になったらしく、クラス内でのメンバ関数の宣言に クラス名::メンバ関数名 ではなく メンバ関数名 と表記すると良い。 STLでエラー functional(143) : error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : テンプレート 引数を 'const std::_Tree<_Traits> &' に対して 'const std::string' から減少できませんでした std::mapと同時に使い始めてmapだけインクルードしてたので気付かなかった。 #include <string> してなかっただけ。 文字列を含むcsvを読む fgetsで読んだ1行分のバッファから

    yowano
    yowano 2013/11/29
    stringをキー値としたmapを作ったところ、ハマった。結論、をインクルードしているとstringが静的デバッガに引っかからなくなるが、もインクルードしないとエラーが出る。
  • C++マニアック,テンプレート,関数,クラス,template,function,class

    C++マニアック コンパイラ,テンプレート,関数,クラス,template,function,class ページの末尾へ トップページへ C++ の面白さは、テンプレートをきわめて、初めて理解できるといっていいでしょう。 テンプレート関数とテンプレートクラス テンプレート関数 テンプレート関数とは テンプレート関数がコンパイルできない場合 テンプレート引数を増やしてみる テンプレート関数の異型 テンプレートクラス テンプレート関数とテンプレートクラス ページの先頭へ まず認識すべきことは、テンプレートには大きく分けて次の二つがあるということです。 テンプレート関数 テンプレートクラス 意味はさておき、ここでは、まず、テンプレートには関数とクラスの二つがあるということを認識してください。 更に、上記 2 種類のテンプレートには、どちらにも、引数が変数型ではない異型があります。意味はさておき、

    yowano
    yowano 2013/10/26
    テンプレート関数の引数がTなどではなく、intやcharになっている場合の記述がここ以外のサイトであまり見当たらないため、ブクマ。
  • https://kikairoya.hatenablog.com/entry/20100718/1279465696

    yowano
    yowano 2013/10/23
    基本的にはvectorを選んでもアリ。ただし、中間への挿入やコピーコンストラクタの呼び出しが盛んに行われる場合は、vectorは避けるべき。ソート済みシーケンスを作る時は、是非dequeを使いたい。
  • C++マニアック,よくわかるC++言語プログラミング講座

    What's new 2008/06/30 Google 検索窓をつけてみました。 2008/06/14 身長や体重など複数の基準でソートする例 を追記。 2008/06/14 英文字文書を読んで、文字数の頻度順にソートする例 を追記。 古い What's new 当サイトで提示するサンプルコードは、あまりにも単純明快で、一見つまらないぐらいに見えるはずです。しかし、もしあなたがそう感じたのであれば、それは、ねらいどおりで、大成功と言えます。ちょっと難解と思われている C++ が、つまらなく見えるほど平易に解説されているということですから。 基礎(入門)編 その他(非 C++ 的) エッセー C++ はアセンブリ言語のように軽快であるにもかかわらず、仮想クラスやクラスの継承、オペレータのオーバーロード、そして、テンプレートと、高級言語のプログラミングテクニックを余すところなく駆使で

  • C++ 高速化 - speedkumoのプログラミング日記

    研究でC++でソフトウェアの開発を行っていますが データ量が少ない場合は速度はあまり、気にしなくていいのですが、 データ量が増えてくると、計算量などを意識して、高速化をする必要性を感じてきました。 自分は実装でSTLのmapやmultimapを使っているのですが、mapの検索の計算量がO(log n),multimapの計算量がO(nlogn)なのでここで、時間をっているのだと考えられます。 そのため、この部分の計算量を減らす方法を検討しました。 まず、STLのmapの計算量がlog(n)なのは、実装に二分木が用いられるためです。そのため、このmapの実装をhashで行ったら高速化されるのではないかと考えました。 詳しい説明は以下 BoostでC++0xのライブラリ「TR1」を先取りしよう (5) (1/2):CodeZine(コードジン) そこで、調べていくと、boostで計算量がO(

    C++ 高速化 - speedkumoのプログラミング日記
    yowano
    yowano 2013/09/05
    mapでは遅いと感じた時には、boostのunordered_mapがおすすめ。listのオーバーヘッドが大きいと感じた時には、C++0xに含まれるforward_listがおすすめ。
  • 基本 その2『ListとVectorの違い』 - Atsushiのプログラム日記

    その2では『ListとVectorの違い』についてです。 この二つは同じ様に使われていますが、 使用用途を間違えると無駄な処理が発生する事が有ります。 vectorは使ってるけどlistは使ってないって方もいらっしゃるのでは? 自分自身vector有ればよくね?とか考えてました。 しかし、仕組みを知ると愚かさに気づきます。 まずすごく簡単なListの使用例 #include #include #include int main() { std::list list_val; list_val.push_back(10); list_val.push_back(20); for each(int val in list_val) std::cout << val << std::endl; return 0; } 出力: 10 20 当にvectorとlistってかき方似てるなぁ…。 さて

    基本 その2『ListとVectorの違い』 - Atsushiのプログラム日記
    yowano
    yowano 2013/09/05
    ランダムアクセスはvectorが速くて、挿入・削除はlistが速い理由を、具体的に、分かりやすくまとめた記事。
  • vector, list, set, dequeのパフォーマンスを実験したよ - nursの日記

    やあ子供たち。今日はSTLのstd::⇒ vector, list, set, dequeのパフォーマンス測定の実験をしたよ。以下のようなコードだ。試してみてくれ。 #include <iostream> #include <vector> #include <list> #include <algorithm> #include <ctime> #include <set> #include <deque> using namespace std; #define N 1000000 #define P 400000 class less_than_4000 { public: bool operator()( int i ){ return i<P; } }; int main( int argc, char* argv[] ) { vector< int > vec; list< i

    vector, list, set, dequeのパフォーマンスを実験したよ - nursの日記
    yowano
    yowano 2013/09/05
    全体的にvectorが速いため、どのSTLコンテナを使っても実装できるという場合は、vectorが良いだろう、という結論。
  • C++, STL: 基礎的な覚え書き(サンプルソース)

    /* キーをカテゴリとして、複数の要素(配列)を持つmapオブジェクトを作る */ #include <iostream> #include <vector> #include <map> #include <string> using namespace std; /* 複数の要素を指定された区切り文字で連結した */ /* 文字オブジェクトを返す */ string join(vector<string> &v, char *delim) { string out; vector<string>::iterator ite = v.begin(); for(; ite != v.end(); ite++) { out.append(*ite); if((ite + 1) != v.end()) out.append(delim); } return out; } int main()

    yowano
    yowano 2013/09/02
    キーをカテゴリとして、複数の要素(配列)を持つmapオブジェクトを作る
  • 相互の関係性をうまくモデリングする : あんちょこ

    さてさて、std::mapの解説も終わったところで命の双方向の関係性について書こう。前回はポインタで相互に連結しようとして問題にぶち当たった。今回は総当り表のような構造をclassの外部に持たせることを考えてみよう。 まずは関係を表すRelationshipクラスを定義する。 //Relationship.hpp #ifndef INC_RELATIONSHIP_HPP #define INC_RELATIONSHIP_HPP #include <map> #include <string> #include "Person.hpp" enum Relation{ None, Friend, Teacher, Student }; std::string toStr(Relation); class Relationship{ public: void registerRelation(

    相互の関係性をうまくモデリングする : あんちょこ
  • サービス終了のお知らせ

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

    yowano
    yowano 2013/08/28
    関数オブジェクトは、 ()演算子をオーバーロードしたクラスのこと。関数オブジェクトに加え、for_eachの分かりやすい解説もなされている。
  • スマートポインタ « 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) について説

    yowano
    yowano 2013/08/28
    スマートポインタの一種である auto_ptr の使い方。ただし現在では、auto_ptr の代わりに、unique_ptr の使用が推奨されている。
  • その12 イテレート中のSTLのlistから要素を安全に削除する方法

    ホーム < ゲームつくろー! < Programming TIPs編 その12 イテレート中のSTLのlistから要素を安全に削除する方法 STLのコンテナは「イテレータ」によって要素を取り出します。この時良くあるのが「ある要素をチェックして、必要が無くなった場合はリストから削除する」という作業です。例えば描画オブジェクトのリストからもういらなくなったオブジェクトを除く時などこの作業が必要になります。 イテレート中のリストから要素を除く場合、ちょっと注意しないと思わぬバグが誘発します。この章ではイテレート中のリストから要素を除く方法をまとめます。まさにTIPsです(^-^;。 ① まともにやるとあっさりバグ 例として、int型のリストに0~9までの要素がこの順番で登録されているとしましょう。このリストをイテレートして「5」を取り除きたいとして、次のようなコードを書きました:

    yowano
    yowano 2013/07/08
    単純に『MyList.erase(it);』とやらずに、『it = MyList.erase(it);』として戻り値ゲット。その後にcontinueでi++せずにループの最初に戻ると、上手くいく。
  • サービス終了のお知らせ

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

    yowano
    yowano 2013/04/15
    『stringでは文字列の終端を空文字列で管理せずに、文字数で管理しています』ということらしい。ちなみに、c_str()では勿論『終端文字'\0'で終わる文字列へのポインタを返す』ようになっている。
  • 1