C vs. C++ 其中一个显式区别,就是后者增添了标准库类型,vector、string、bitset。
以vector为例,实际上可将其看成是一个可变长度的数组,迭代器类比于增强版本的指针。而标准库函数最大的好处在于其成员函数,可以轻松地完成一些在C语言中需要特定代码段完成的功能。并且,就安全性而言,vector的迭代器也不必处处小心诸如指针初始化、或者指针越界之类的隐藏错误。
而标准库函数中的string,比C语言中处理字符的char*,在实际应用中限制也更少。主要问题仍然是,C语言将字符串作为数组处理,则合并、拷贝时,必须考虑到起始点以及总长度的问题,这也就造成了代码块的可移植性受到了很大的限制。而C++不存在这样的问题,因为其语言的标准库处理所有的内存管理问题。只要在开始阶段定义了string型变量,则接下来的操作和一般的变量赋值加减的操作无异了。此外,C风格字符串一个更严重的缺陷在于默认null结尾字符的存在,strlen的返回值必须加一才是整个数组的真正长度,这样的细微之处很可能在数组操作时成为一个隐患。
标准库提供的bitset操作,更直接,更容易阅读和书写、正确使用的可能性更高。而且,bitset对象的大小不受unsighed数的位数限制。通常来说,bitset优于整型数据的低级直接位操作。
综上,C语言风格的内置数组和C++标准库函数相比,更易于出错,更难于理解难于调试,。所以除非是在极端要求代码执行速度的情况,否则使用C++的标准库函数更好。
June 29, 2010
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment