-1

最近、地元の図書館からc ++用の本を借りました。本のタイトルは、JosephBerginによる「c++の標準テンプレートライブラリを使用したデータ構造プログラミング」です。問題は、1998年に発行された日付を確認したときです。これは、今日のコンピューターの速度を考えると、かなり長い時間枠です。この本は私を傷つけたり助けたりしますか?これが私の本のアルゴリズムからの抜粋です:

//  THIS IS AN ALGORITHM EXPLAINED AS SELECTION SORT
template <class T>
void selectionSort(T* start, T* end)                //first off, i notice an excessive use of pointers, when usually 
{   for(T* where = start ; where < end ; where++)   // im told to work around pointers if i dont need to use them
    {   T* loc = where;                             //weird bracket formatting(old practice i would guess?)
        T small = *loc;
        for                                         //very strange method of organizing for loops used in the book
        (   T* inner = where + 1;
            inner < end;
            inner++;
        )
            if(*inner < *loc)
            {   loc = inner;
                small = *loc;
            }
        *loc = *where;
        *where = small;
    }
}

このコードは、選択ソートを行うために奇妙なメソッドを使用しています。ポインターは簡単に通常の値に置き換えることができますが、この本はポインターの使用が大好きで、ループ用に奇妙な形式になっています。このコードは、最新のC ++ 11アプローチから、配列を使用した選択ソートまでどのくらい離れていますか?

*また、すべての変数を_プレフィックスで宣言しますが、これは変数に特別なことをしますか?宣言された変数の例:

int _Num1;
float _Select;
4

2 に答える 2

2

今日、優れたプログラマーとして知られているすべての人がその日から(またはそれ以前に)本を読むことを約束します。それは概念に関するものであり、概念が劇的に変わることは決してないので、それがあなたを傷つけることはないと思います。新しい本を見つけることができますそれは素晴らしいでしょう!

于 2012-10-17T20:49:00.650 に答える
2

あなたは新しい本を手に入れるべきです、しかしそれはあなたの現在の本が必ずしも有害であるという意味ではありません。

C ++言語は、国際委員会によって作成された標準によって定義されています。コンパイラはこの標準をさまざまな程度で実装しますが、それらはすべてC++標準に多かれ少なかれ準拠しています。

1998年以降、1つではなく2つの新しい標準が作成されました。1つは2003年(多くの場合C ++ 03と呼ばれます)、もう1つは最近2011年(C ++ 11)です。1998年に存在した基本的なイディオムは今日でも関連しているため、それらを学ぶことは依然として重要です。しかし、多くの人が(誤って)「STL」と呼んでいる標準ライブラリの部分を含め、標準ライブラリには大幅な変更が加えられています。言語の経験が増えるにつれて、1998年に知られている多くのイディオムが改良され、1998年には不可能だったC++11で可能な新しいイディオムがあります。

C++11とC++03の違いの多くを列挙した優れたウィキペディアの記事があり、1998年からのC++にはさらに多くの違いがあります。

これが私が読んでいる新しい本の1冊です。C ++標準ライブラリ:チュートリアルとリファレンス(第2版)

于 2012-10-17T20:52:27.790 に答える