2007-04-01から1ヶ月間の記事一覧

Modern Design読んでます。

c++

これを読んでいるとマジックを見てるような気分になります。 難解ですが、読み終わったら相当templateの使い方が変わりそう。しかし、ここに書かれているようなことを実践するとなると、コードが難解になりそう。 そのせいで、逆にバグが増えそうな気がする-…

同一回線上でのグローバルIP指定でのアクセス

自宅のPCから、自宅のWebサーバーに、グローバルIP指定で接続しようとしてもできませんでした。 しかし、どうやらプロキシを介せばOKらしい。

strcmpの返り値

c++

strcmpは文字列が一致していると0を返す! 普通に考えたら逆だと思ってしまうけど。

iterator

c++

iteratorを実装する際は基本的に、前置++,--しか使わないようにするべきらしい。 後置++や--を実装するには、少しコストがかかるっぽい。

snprintf()の返り値は?

c++

snprintf()の返り値は、入った文字列の数でなく、入れようとした文字列の数を返します。 例えば、 char str[5]; int ret = snprintf(str, sizeof(str)), "hogegegege"); の場合、retは5でなくて、10。 うーん、紛らわしい…。

strcpyとstrncpyで、どっちがベター?

c++

以下の関数はバッファーオーバーランを起こす可能性があるので、使うべきではなく、→で示したほうの関数を使うべきとよく言われる。 sprintf → snprintf strcat → strncat strcpy → strncpy vsprintf → vsnprintf しかし、strncpyが安全かというと、そうでも…

placement new

c++

new(p) Hoge というように、newの引数にポインタを渡した場合、ポインタpの指す場所へオブジェクトを配置します。

namespaceの中括弧に;をつける?

c++

namespace { }; というように;を最後につけているコードを見かけることもあるが、『プログラミング言語c++第3版』では、;を書いてなかった。 んなので、書かないのが正しいっぽい。

find_if

c++

昨日、書いた関数オブジェクトを使うと、argorithmのfind_ifが使えます。以下は、例です。 #include <iostream> using namespace std; template<class T> struct Less_than{ T value; Less_than(const T& v) : value(v){} bool operator()(const T& v) const { return v</class></iostream>

関数オブジェクト

c++

関数オブジェクトとはなにか? 『C++の設計と進化』に書いてあるのをそのまま引用すると、「関数としての挙動を定義する適用演算子()を持つクラスのオブジェクト。」ということらしい。例えば、関数オブジェクトを使うと以下のようなコードが書けます。 #inc…

algorithm:find

c++

algorithm便利です。 今まで、使ってなかったのが悔やまれます。 しかも別にSTLのコンテナとかでなく、配列でも使えます。 より正確に言うならば、引数として渡すイテレータ対に、++、*、!=演算子が適当に設定されているなら使えます。 そんで、もちろん標準…

配列長の取得の仕方

c++

cで配列長を取得するときには、しばしば、 #define GET_ARRAY_LENGTH(array) sizeof(array) / sizeof(array[0]) cout << GET_ARRAY_LENGTH(array) << endl; // -> 100 などとします。 このマクロは固定長配列にしか使えないのですが、ついつい以下のようなコ…

はてなダイアリーへようこそ!

このページはあなた専用の日記(ブログ)です。*1さっそく「日記を書く」をクリックして最初の記事を書いてみましょう。はてなダイアリーの一番簡単な使い方を知りたい方は、以下の動画をご覧ください。(再生ボタンをクリックすると、はてなダイアリーの使…