タグ

c++に関するsotarokのブックマーク (95)

  • Standard Template Library プログラミング on the Web

    1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat

    sotarok
    sotarok 2009/10/14
    Standard Template Library プログラミング / 1999年発行 2002年絶版の本 (移転してた)
  • Kazuho@Cybozu Labs: Cppref: reading cppreference.com docs offline, like man or info or perldoc

    Today I created a tiny script called cppref, a wrapper for documents on cppreference.com.  Blurbs are: docs are bundled with the interface, no network access required works like man(1) or info(2) or perldoc(2) It looks like follows. $ cppref You are here: C++ Reference C++ Reference C++ General Topics                      * C++ Strings * C++ I/O * FAQ                                 + C++ String S

    sotarok
    sotarok 2009/10/10
  • マルチスレッドとstl - yasuhisa's blog

    スレッドの中でvectorに次々につっこんでいくプログラム。 #include <iostream> #include <vector> #include <boost/foreach.hpp> #include <boost/thread.hpp> #include <boost/bind.hpp> using namespace std; vector<int> v; void greetingWithID(int i) { v.push_back(i); } int main(int argc, char *argv[]) { int n = 1000; boost::thread_group agroup; for (int i = 0; i < n; i++) { agroup.create_thread(boost::bind(greetingWithID, i)); } ag

    マルチスレッドとstl - yasuhisa's blog
    sotarok
    sotarok 2009/10/10
    thread
  • GitHub - kazuho/cppref: man-style access to cppreference.com documents

    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

    GitHub - kazuho/cppref: man-style access to cppreference.com documents
    sotarok
    sotarok 2009/10/10
  • PStade.Oven map_keys と map_values - Faith and Brave - C++で遊ぼう

    #include <iostream> #include <map> #include <string> #include <boost/foreach.hpp> #include <pstade/oven.hpp> using namespace std; using namespace pstade::oven; #define foreach BOOST_FOREACH int main() { map<string, int> dict; dict["Akira"] = 23; dict["Johnny"] = 38; dict["Millia"] = 16; // key のみ出力 foreach (const string& key, dict|map_keys) { cout << key << endl; } // Akira, Johnny, Millia // valu

    PStade.Oven map_keys と map_values - Faith and Brave - C++で遊ぼう
    sotarok
    sotarok 2009/10/02
    map の keys values / boost foreach
  • ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改

    ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす

    ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改
    sotarok
    sotarok 2009/10/01
    inode順にソート
  • AzaraC

    AzaraCは高速なCGIを効率よく作成するために開発されたC++用のテンプレートエンジンです。 新着情報 2006-10-27 AzaraC 0.3.0 同一キーに複数の値が割り当てられている入力を取得できるように変更 環境変数AZARAC_INCLUDE_PATHでテンプレートをコンパイルする際の-Iオプションを指定可能にした 環境変数AZARAC_LIBRARY_PATHでテンプレートをコンパイルする際の-Lオプションを指定可能にした 2006-10-16 AzaraC 0.2.0 POSTメソッドからの入力に対応 テンプレートエンジン AzaraCでは、Ruby on RailsPHPなどと同様に、Webページにプログラムを埋め込むことを可能にする「テンプレートエンジン」を提供します。テンプレートエンジンを利用することにより、デザインとロジックを分離したWebアプリケーションの作

    sotarok
    sotarok 2009/10/01
    「AzaraCは高速なCGIを効率よく作成するために開発されたC++用のテンプレートエンジンです。」
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine

    C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。記事ではこのTBBの概要と、基的な使い方を解説する。 C/C++で並列アプリケーションを実装する手法として、並列化したい処理をOSのAPIを用いてマルチスレッド化する、もしくは並列プログラミングの規格である「OpenMP」を利用する、といったものが知られている。これらについては以前の記事でも紹介しているが、マルチスレッドを利用した実装は柔軟性がある一方で手間が掛かり、OpenMPは比較的手軽だが柔軟性に欠けるなど、それぞれに長所と短所がある。 また、

    オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine
  • Thriftを使って俺俺Key-Value Storeを作った - nokunoの日記

    っていうタイトルにしようと思ったんだけど、要するにThriftを使ってTxをサーバーとして使えるようにしました。 Thriftについてはこちら。Thriftインストールメモ - nokunoの日記 Txについてはこちら。Tx: Succinct Trie Data Structure READMETxThrift 1.00 2009/09/19動作環境:LinuxTxThriftはThriftを用いてTxをサーバーとして利用できるように拡張したソフトウェアです。TxThriftは、Txの持つ以下のような特徴を引き継いでいます。1. キーを圧縮して持つため、メモリー使用量が少ない2. 自然言語処理に必要なcommon prefix searchなどを高速に行うことができる3. 静的にインデックスを持つため、初期化後はキーの追加や削除はできないTxThriftの応用例として、以下のようなアプリ

    sotarok
    sotarok 2009/09/22
    trie
  • 変電工 - Google C++スタイルガイド日本語訳

    sotarok
    sotarok 2009/08/21
    コーディング規約日本語訳
  • Iteratorって難しい……。 - 神様なんて信じない僕らのために

    適当に書いたらカオス。 昔、Iteratorにすごく苦手意識があった。 C++だと、Iteratorを使った場合、 for (list<Hoge>::iterator it = hoges.begin(); it != hoge.end(); ++it) { (*it)->hogehoge(); } などと書かなければならない。(もちろん簡略した形もあるけど) これがいかにも「小難しい」と感じるのは僕だけではないと思う。 特にCから入った人間にとって、 for (Hoge* hoge = hogeListHead; hoge ; hoge = hoge->next ) { hoge->hogehoge(); } と比べてもどうも違和感がある。 しかも、C++Iteratorは標準では素直にそのiteratorが指し示すnextやprevの操作を行えない。(ように見える)*1 最初は++と

    Iteratorって難しい……。 - 神様なんて信じない僕らのために
    sotarok
    sotarok 2009/07/28
    iterator
  • constメンバ関数は重要 - Faith and Brave - C++で遊ぼう

    私は基的に、C++でソース書くときはやたらめったらconst付けます。 なぜならHaskellが好きだからです(ぇ じゃなくて、状態の変更によるバグを減らすためです。 しかし、他人が書いたソースを見てると、オブジェクトのconst操作を考えて設計されてないことが けっこうあり、Is〜とかGet〜といった名前の関数の中でメンバの状態を変更してたりします。 これはとくに、JavaやC#のようなconstメンバ関数がない言語からC++に移植するようなときに 起こりやすいのですが、C++でもconstメンバ関数の存在を知ってか知らずかconstが付いてないことが多々あります。 書籍でいうと、『Game Programming Gems』では明らかにconst操作なメンバ関数にconst付いてないですね。 C++で大きなプログラムを組む際は、元となるコード(移植元やライブラリ)がオブジェクトのco

    constメンバ関数は重要 - Faith and Brave - C++で遊ぼう
    sotarok
    sotarok 2009/07/18
  • C 言語のテストフレームワーク - A More Beautiful day

    wassr の TL でテストの話があったので、C 言語で使えそうなテストフレームワークを探してみた。CUnit があるのは知っていたけれど。 それぞれの特徴や使い方はこれから調べる。 Effective CUnit は最近も更新されているし、機能改善などはこれからも期待できるのかな。CSpec も最近のブームからできたものだろうから、これから続いていくような気がする。 [[Cutter|http://cutter.sourceforge.net/index.html.ja]][[Cunit|http://sourceforge.net/projects/cunit/]][[Effective CUnit|http://kaeru-lab.sakura.ne.jp/cunit/]][[CSpec|http://github.com/arnaudbrejeon/cspec/tree/m

    sotarok
    sotarok 2009/06/18
    Effective CUnit
  • デストラクタからオーバーライドされた仮想関数が呼べない - imHo

    デストラクタとは別の解放用の関数が仮想関数になってるとして、基底クラスのデストラクタから呼び出しておけば自動的に呼び出されるものかと思ってた。 #include <iostream> using namespace std; struct Base { virtual ~Base() { terminate(); /* <- ここで仮想関数呼び出し*/ cout << "~Base" << endl; } virtual void terminate() { cout << "Base::terminate()" << endl; } }; struct Derived : public Base { virtual ~Derived() { cout << "~Derived" << endl; } virtual void terminate() { cout << "Derived:

    デストラクタからオーバーライドされた仮想関数が呼べない - imHo
    sotarok
    sotarok 2009/06/13
    Effective C++ にもかいてあったなあ
  • Boostのレビュー状況 2009/06 - Faith and Brave - C++で遊ぼう

    BoostML - Review Wizard Status Report for June 2009 【Future】 Boost.Range Extension : 採択 Polynomial Library : リジェクト Constrained Value : 未決 【以前からの問題点】 ・2007/08に採択された時系列(Time Series)ライブラリはまだ提出されていません。 ・浮動小数点ユーティリティライブラリはまだ提出されていません。 Boost.Mathライブラリに統合される予定です。 ・2008/01に仮採択されたSwitchライブラリは、完全な採択のための提出はまだされていません。 ・2008/09に仮採択されたPhoenixライブラリは、完全な採択のための提出はまだされていません。 Protoメタプログラミングライブラリに基づいたPhoenixの書き直しがたった

    Boostのレビュー状況 2009/06 - Faith and Brave - C++で遊ぼう
    sotarok
    sotarok 2009/06/10
    人手が全然たりてないんだなあ..
  • About libjingle - Google Talk for Developers - Google Code

    About libjingle libjingle is a collection of open-source C++ code and sample applications that enables you to build a peer-to-peer application. The code handles creating a network connection (through NAT and firewall devices, relay servers, and proxies), negotiating session details (codecs, formats, etc.), and exchanging data. It also provides helper tasks such as parsing XML, and handling network

  • 「Iterators Must Go」を訳してみた - Faith and Brave - C++で遊ぼう

    Boost Con '09で行われたAndrei Alexandrescuのセッション、「Iterators Must Go」の資料を翻訳してみました。 【原文】 iterators-must-go.pdf 【日語訳】 iterators-must-go(ja).pdf 【Slideshare】 http://www.slideshare.net/faithandbrave/iterators-mustgoja 訳がおかしいところがあったら教えていただけるとうれしいです。 【修正履歴】 2009/05/15 19:25 コメント欄でturuginaさんから指摘いただいた点を修正 2009/05/18 10:57 コメント欄でportownさんから指摘いただいた点を修正

    「Iterators Must Go」を訳してみた - Faith and Brave - C++で遊ぼう
    sotarok
    sotarok 2009/05/22
  • Google Japan Blog: Google が公開しているソフトウェアの解説 ( その2 )

    このエントリは、GoogleGoogle Code でオープンソースとして公開しているソフトウェアの解説シリーズの第2回です。 今回は、Google CoreDumper というソフトウェアを紹介します。 このソフトウェアはアプリケーションプログラムから任意のタイミングでコアダンプを出力する機能を提供するライブラリです。 「 コアダンプ 」 はプロセスのある時点での状態を保存したファイルで、デバッグのときなどに利用されます。通常、プログラムが異常終了したときや特定のシグナルを受信したときに OS カーネルがコアダンプファイルを出力し、そのプロセスは終了します。開発者はそのダンプファイルを gdb などのデバッガなどで解析して問題の原因を調査します。 問題が発生してコアダンプが生成される場合以外にも動作中のプロセスのスナップショットをコアダンプファイルとして生成できれば、その時点でのプ

    Google Japan Blog: Google が公開しているソフトウェアの解説 ( その2 )
    sotarok
    sotarok 2009/05/12
    Google CoreDumper
  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
    sotarok
    sotarok 2009/05/12
    google-glog