ドットインストール代表のライフハックブログ
STLの比較関数には、等しい値が渡されたときには、falseを返さなければならない、というルールがあります。 これは、「Strict Weak Orderingルール」と呼ばれ、例えば、SGI のStandard Template Library Programmer's Guideにも、Strict Weak Orderingという専用のページが存在しています。また、Effective STLでは、第21項に「等しい値に対して比較関数が常にfalseを返すようにしよう」という、そのものズバリの項目があります。 にも関わらず、私は、この件をすっかり忘れており、自分のコードの比較関数で、等しい値に対して true を返していました...。 この間違いが発覚したのは、問題のコードをWindowsのVisual C++ 2005でコンパイルして実行した時。普段はgccを使っていますが、マルチプラ
ここ2日ほど考えていたis_sortedですが,ようやく結論が出ました.ですがその結論の前に,多分多くの人にとっては全然面白くないであろうことを延々議論します. 結論は今日のblogの一番最後にありますので,結論だけ見たい人はid:Cryolite:20040529#p5へ飛んでください. まず最初に「値が等しいということ(Equality)」という概念について今一度確認してもらいます.C++(に限らず多くのprogramming言語)で普通"=="(及び"!=")で表される関係です. int a = 1; int b = 1; int c = 2; assert( a == b ); // `a' is equal to `b' assert( a != c ); // `a' is not equal to `c' 上の例では,aとbはequalである,と言えます. 何のことは無い「値
ソートについて学ぶといえばまずストレートインサーションあたりから入り、バブルソートが出てくるのはソートの章の中頃、というのが昔の定番だったように思います。 ところが最近では、定番としてバブルソートを出してくる解説WEBページや、 ソートの章の最初の事例がバブルソート(単純交換ソート)を出してくるアルゴリズムとデータ構造の書籍があるのを発見し、びっくりしました。 はたしてソートについて学び始めるときに、最初に取り組むアルゴリズムはどれが適切なのでしょうか。バブルソートははたして適任でしょうか?
{{search404Captions.content404Title}} {{search404Captions.content404Description}}
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く