タグ

c++に関するhmaroのブックマーク (15)

  • Deep C

    Programming is hard. Programming correct C and C++ is particularly hard. Indeed, both in C and certainly in C++, it is uncommon to see a screenful containing only well defined and conforming code.Why do professional programmers write code like this? Because most programmers do not have a deep understanding of the language they are using.While they sometimes know that certain things are undefined o

    Deep C
  • C++: 水面下の仕組み - Microsoft Visual C++ Web Site

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    C++: 水面下の仕組み - Microsoft Visual C++ Web Site
  • 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);

    hmaro
    hmaro 2011/08/11
  • No Such Blog or Diary - サブクラス判定

  • たぶん究極のC++ライブラリ、Lokiを使う - SmallObj

    デフォルトのメモリアロケートは遅いので、 小さいオブジェクトに特化したアロケータを作ってやったぜ、 と、著者は自信まんまんなんですが、 これ、結論から言うと、遅いです。 デフォルトの new & delete よりも。 まあ、一応、使い方。 class Class : public Loki::SmallObject<>{}; これでおしまい、すごくカンタンです。 以下の内容が、 普通のメモリマネージャの使われかたを反映していない、 SmallObj の方はロック有りなのでは、 という2点で間違ってるのではないかという指摘を受けました。 特に前者はきちんと確認していませんが、 恐らく両方とも全くその通りだと思われますので 以下の結果は無視してやって下さい… すいません。 で、お楽しみの速度比較です。 速度比較のソース Efficient C++ の MemoryPool cppll で紹介

    hmaro
    hmaro 2011/07/08
  • C++編(言語解説) 第36章 placement new

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

    hmaro
    hmaro 2011/07/08
  • オープンソースでC++で書かれているものを探しています。…

    オープンソースでC++で書かれているものを探しています。 条件としては、 1. GNU C++(g++)でコンパイルできるもの (windows系はだめ) 2. STL使ってるもの 3. テンプレートを使ってるもの 4. 文字列処理は主にstd::stringを使ってるもの(char * でないとダメな所はOK) 5. できればGUIでないもの 6. あたながすごいと思うもの。またどうすごいのかも教えてください。 例えば以下のようなものを知っています。(なので以下のもの以外で) MySQL (STL使ってない) Firefox (GUI) MeCab よろしくお願いします。

    hmaro
    hmaro 2011/06/22
  • StateパターンでCSVを読む

    こんなのを読み込んで適当な処理を施して欲しい、と。Excelのシートから各セルの値を拾い出すのはさほどに難しくはないのですが、いかんせん時間がなかったのでいったんはお断りしたところ、「Excelシートを直接読むのが面倒ならCSVからでもかまわん」とのこと。CSVならフツーにテキストファイルを読めばいいから小一時間で作れそう、昼メシ奢ってもらうのを報酬に引き受けることにしました。 CSVのフォーマット CSV(Comma Separated Values)はMS-DOSあるいはその以前からスプレッドシートのデータ・フォーマットとして使われています。CSVの規格/標準としてはRFC4180がありますが、こいつは2005年に作られたものでそれ以前のアプリケーションがRFC4180に準拠していることは期待できるはずもありません。とはいえ、まずはRFC4180に従って作られたCSVなら正しく読めるこ

    StateパターンでCSVを読む
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
    hmaro
    hmaro 2010/08/17
  • TopCoderから学ぶ美しいマクロや型宣言 C++ - peroon's diary

    TopCoderというプログラミングコンテストで 他人のコードから発見した、美しいマクロや 型宣言を紹介します。 これを導入することで、C++のコードが短くなり、 早くコーディングすることができます。 ※すべてのTopCoder参加者がマクロなどをテンプレートと して用意しているわけではありません。 マクロなどを定義している人は半分より少ないようです。 TopCoderの他人のコードを参考に、 マクロやtypedefによる型宣言をまとめました。 コードの全体はこのようになっています。 (あとで個別にコメントします) //include //------------------------------------------ #include <vector> #include <list> #include <map> #include <set> #include <deque> #in

    TopCoderから学ぶ美しいマクロや型宣言 C++ - peroon's diary
    hmaro
    hmaro 2009/11/27
  • ワイド文字列の罠

    C++の罠 wchar_tを使うときの罠 日語などのマルチバイト文字列を扱うソフトで、 正規表現などの文字列処理をもっと楽にやりたいという人は、 選択肢の一つとしてワイド文字列の使用を考えることでしょう。 最近では多くのライブラリがワイド文字列とシングルバイト文字列双方に対応し、 C言語も95年の改定でワイド文字列型wchar_tを導入し、 既存のchar型を使用する標準ライブラリはほぼ全てwchar_t版が用意されました。 無論C++も、98年にISOで標準化された際には、 文字列クラスはちゃんとstringとwstringの双方が用意されました。 ところが、実際にwchar_tを使用するとなると、様々な障壁が立ちはだかります。 ここでは、私が陥ったwchar_tに関する「罠」を紹介していきます。 罠その1:Win9xで使えない WinNT系列では、文字列を扱う全てのAPIにchar版

  • ロベールのC++入門講座を読んで C++ を初歩の初歩から再入門するよ - 前編 - ひげぽん OSとか作っちゃうかMona-

    前置き 自分の C++ レベルに絶望したので「ロベールのC++入門講座」を読んで再入門していく過程を日記に書いていきます。 「おまえはそんなことも知らずにコードを書いていたのか!」「それは間違い!」など叱咤激励募集中です:-) 読んでみたら、たくさんの驚きがありました。 スルーせずに読んでもらえると1つくらい役に立つことを提供できるかもしれません。 例えば5章のデフォルト引数に関数を使える例とか。 ルール 前置きはともかくはじめましょう。13:48にスタバで始めました。 読んで行くうえでいくつかルールを決めます。 知らなかったことは正直に知らなかったと書き、自分が読んで分かる説明を書く。 知識が曖昧だった所も同様に明確な説明を書く。 悩んだ内容を書く。 理解が怪しい所は必ずコードを書く。 さあ1章から読んでみよう。 1章 まずは使い方(13:50) 各 OS 毎に C++ の開発ツールを紹

    hmaro
    hmaro 2009/10/23
  • [迷信] 非局所オブジェクトは外部結合 | 株式会社きじねこ

    株式会社きじねこは大阪のソフトウェア開発会社です。組込み系・業務系のプログラム開発から電子回路の設計までおまかせください。 今回のタイトルはやや分かりにくいかもしれません。「非局所オブジェクト」というのは、関数の外で宣言したオブジェクトのことです。いわゆる「グローバル変数」とほぼ同じと考えてください。 さて、関数の外で宣言された「非局所オブジェクト」ですが、static 記憶クラス指定子が付いていれば内部結合になることはいうまでもありません。今回話題にするのは、記憶クラス指定子が付いていないデフォルトの状態での結合がどうなるかです。 結論からいうと、非局所オブジェクトが外部結合になるか内部結合になるかは、C と C++ では異なります。これは、C と C++ の間の重要な非互換性のひとつです。 まず、C の場合には、明示的に static 記憶クラス指定子を付けない限り、非局所オブジェクト

    hmaro
    hmaro 2009/09/17
  • name mangling と extern "C" - memologue

    さて、T君と飲んだ理由は、昼間にオシゴトの技術的な相談に乗ってあげたからなのだが…。平日昼に急に携帯に電話がかかってきてビックリした。曰く、 ずっとJ2EEなコードを書いて暮らしていたのだが、わけあって急にVxWorksとC++で組み込み機器向けのコードを書くことになった。が、組み込みやC++に詳しい人間が全く居なくて難航している。 現状誤動作しており、とりあえず早急に修正しなければならないコードがあるのだが、誤動作の原因がさっぱりわからない。相談に乗ってもらえないか。ていうか助けて。コンパイラはGNUのを使っている。Cを学んだ事はある。 へいへいOKOK。 構造体Aがある。この構造体はa.hで定義されている。 構造体Aを操作する関数fooがある。fooのプロトタイプはfoo.hに書いてあり、int foo(A* a); となっている。foo.cppで関数fooが実装されている。 今問題を

    name mangling と extern "C" - memologue
  • ウノウラボ Unoh Labs: C、C++で開発する際に便利そうなelispを書いてみました

    ウノウでは特に最近、積極的にエンジニアを採用しています。 採用ページをご覧になり興味のある方、ぜひご応募ください!! Find Job!でも募集開始してます! みなさん、Emacsしてますか?明けましておめでとうございます。C++でプログラミングし始めたはずなのにいつの間にかEmacsLispでプログラミングしていたことがあるbokkoです。 今日は、タイトルにもある通り、C、C++で開発する際に便利そうな自作のelispを紹介します。また、単にC、C++のソースコードを読んだりするのにも役立つと思います。紹介するのは以下の2つです。同じようなことをするのが既にありそうな気がして最初は探したんですが、見つからなかったので自分で書きました。 c-open-relational-file.el find-header-file.el 上から順に解説していきます。 c-open-relati

    hmaro
    hmaro 2009/08/28
  • 1