-1

我最近从本地图书馆租了一本关于 c++ 的书,书名是:Joseph Bergin 的“Data Structure Programming with the standard template library in 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;
    }
}

此代码使用奇怪的方法来进行选择排序。指针可以很容易地用普通值替换,但本书喜欢使用指针和奇怪的 for 循环格式。这段代码与现代 C++11 方法与数组选择排序相差多远?

*他们还用 _ 前缀声明所有变量,这对变量有什么特别的作用吗?声明变量的例子:

int _Num1;
float _Select;
4

2 回答 2

2

你应该买一本新书,但这并不意味着你现在的书一定是有害的。

C++ 语言由国际委员会编写的标准定义。编译器在不同程度上实现了这个标准,但它们或多或少都遵循 C++ 标准。

自 1998 年以来,产生的不是一个而是两个新标准——一个是在 2003 年(通常称为 C++03),另一个是最近在 2011 年(C++11)。1998 年存在的基本习语在今天仍然适用,因此学习这些习语仍然很重要。但是标准库发生了重大变化,包括许多人(错误地)称为“STL”的标准库部分。随着我们对这门语言的经验的增长,许多在 1998 年已知的习语都得到了改进,并且在 C++11 中出现了在 1998 年不可能出现的新习语。

有一篇很棒的Wikipedia 文章列举了 C++11 和 C++03 之间的许多差异,而从 1998 年开始,C++ 的差异甚至更多。

这是我一直在读的一本新书。C++ 标准库:教程和参考(第 2 版)

于 2012-10-17T20:52:27.790 回答
2

我向你保证,今天每个被称为优秀程序员的人都会从那些日期(甚至在那之前)阅读书籍,所以我认为这不会伤害你,因为它是关于概念和概念永远不会发生巨大变化,但如果你能找到一本更新的书,那就太棒了!

于 2012-10-17T20:49:00.650 回答