使用C++标准库来提高编程效率
在C语言中几乎所有的数据结构都需要自己去实现甚至最常用的链表,队列等。。。,在中国很多程序员都是在Windows下成长起来的,很多程序员都习惯于使用非语言标准的集合类,入MFC中的CArray, CList, CStringArray … 如下图
在现代的C++编程理念中很强调使用类库, B.J多次强调不应增加太多的语言特性来解决问题(C++语言特性已经够多了够复杂了,要不然现在很多人都又回到C的怀抱啦),而是需要提供更好的类库来解决。
我们应该养成使用C++标准库的习惯,这也是人类从工程学科积累下来的经验,这些经过了千锤百炼的类库无论是性能和跨平台都做了最好的权衡。为每一个应用造一个轮子不仅效率地下,而且在短的时间内你造的轮子不一定好用(bug…)我们不要做“不要重复发明轮子”的“英雄”。纵观其他行业,如计算机硬件,武器工业等。。。都体现了这一思想。如:很多国家,都通过某一优良的坦克或汽车底盘。派生出很多类别的作战车辆。有侦察型。防空型。维修型。这也体现了重用的思想。战舰也是这样的,战舰的船体(包括动力系统,操控系统…)。以这一种成熟的船体来模块化的组合在上层的不同的武器系统便可以承担不同的作战任务。有防空型,反潜行。反舰型。。。我们也要有这种思想。也不多扯淡了下面演示使用C++ 标准库给我们带来的好处,这里只举一个使用STL和传统方式的对比来体现使用 STL 方便之处。更多的STL使用方式可以参考《C++标准库手册》。
简单的例子:
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#ifndef _countof
#define _countof(array) (sizeof(array)/sizeof(array[0]))
#endif
using namespace std;
void demonstrate_traditionary()
{
string strs1[] = {
"Hello",
"Long",
"Time",
"No",
"See",
};
string strs2[_countof(strs1)];
//Copy strs1 to strs2
for (int i=0; i<_countof(strs1); i++) {
strs2[i] = strs1[i];
}
//Compares strs1 and strs2
bool isEqual = false;
for (int i=0; i<_countof(strs1); i++) {
if (strs1[i] == strs2[i]) {
isEqual = true;
break;
}
}
if (isEqual) {
cout << "strs1 == strs2" << endl;
} else {
cout << "strs1 != strs2" << endl;
}
for (int i=0; i<_countof(strs2); i++) {
string::size_type len = strs2[i].length();
for (string::size_type n=0; n<len; n++) {
strs2[i][n] = toupper(strs2[i][n]);
}
}
for (int i=0; i<_countof(strs2); i++) {
cout << strs2[i] << "\t";
}
cout << endl;
}
void demonstrate_modern()
{
vector<string> strs1;
strs1.push_back("Hello");
strs1.push_back("Long");
strs1.push_back("Time");
strs1.push_back("No");
strs1.push_back("See");
vector<string> strs2;
//Copy strs1 to strs2
strs2.resize(strs1.size());
copy(strs1.begin(), strs1.end(), strs2.begin());
//Compares strs1 and strs2
if (equal(strs1.begin(), strs1.end(), strs2.begin())) {
cout << "strs1 == strs2" << endl;
} else {
cout << "strs1 != strs2" << endl;
}
struct StringToUpper {
void operator() (string& str) { transform(str.begin(), str.end(), str.begin(), toupper); }
};
for_each(strs2.begin(), strs2.end(), StringToUpper());
copy(strs2.begin(), strs2.end(), ostream_iterator<string>(cout, "\t"));
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
demonstrate_traditionary();
demonstrate_modern();
return 0;
}
运行结果:
- 大小: 28 KB
- 大小: 31 KB
分享到:
相关推荐
标准c库大全:C++标准库介绍 疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/VC/Article12860.html 标准库中提供了C基本设施虽然C标准库随着C标准折腾了许多年直到标准出台才正式定型但是在标准库实 现上...
和一组特定于 Windows 的库,但 C++ 标准库和第三方 C++ 库可用于任何应用程序。 本部分讨论如何使用 Visual Studio 和 MFC/ATL 包装器库创建 Windows 程序。 有关 Windows 平台本身的文档,请参阅 Windows 文档。 ...
Qt实际上使用的并不是标准的C++,而是标准C++的一个扩展。它通过元对象模型扩展,实现了著名的signal/slot机制,而这一机制也成为Qt的最大特色和优势。 与Qt类似的可移植GUI框架还有wxWidget、FOX等。 3、分布式...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
全书共分8章,包括范型程序设计与C++标准库、异常安全性的问题与技术、类的设计与继承、编译器防火墙和Pimpl惯用法、名字查找名字空间和接口规则、内存管理、误区陷阱以及错误的惯用法等。本书内容深入,论证严谨,...
这些年来,C++语言的发展方向以及C++程序员的关注点,已经从以往注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广泛可用,我们现在能够比以往任何时候更高效地学习和使用C++。本书这一版本...
本书全面介绍了 C++ 语言。...注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广 泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一版本 充分体现了这一点。
这些年来,C++语言的发展方向以及C++程序员的关注点,已经从以往注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广泛可用,我们现在能够比以往任何时候更高效地学习和使用C++。本书这一版本...
本书全面介绍了 C++ 语言。...注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广 泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一版本 充分体现了这一点。
然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户...
【规则1-2-2】用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。 【规则1-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)...
本书全面介绍了 C++ 语言。...注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广 泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一版本 充分体现了这一点。
不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。《华章科技:深入理解C++11:C++11新特性解析与应用》一共8章...
这些年来,C++ 语言的发展方向以及 C++ 程序员的关注点,已经从以往注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一...
本书全面介绍了 C++ 语言。...注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广 泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一版本 充分体现了这一点。
STL(标准模板库)是在惠普实验室中开发的,已纳入ANSI/ISO C++标准。其中的代码采用模板类及模板函数的方式,可以极大地提高编程效率。本书由P.J. Plauger等四位对C++ STL的实现有着卓越贡献的大师撰写,详细讨论了...
18.3.6 用模板来使用RTTI 18.4引用 18.5多重继承 18.6合理使用RTTI 18.7RTTI的机制及花费 18.8创建我们自己的RTTI 18.9新的映射语法 18.9.1staticcast 18.9.2constcast 18.9.3reinterpret_cast 18.10小结 18.11练习...
本书全面介绍了 C++ 语言。...注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广 泛可用,我们现在能够比以往任何时候更高效地学习和使用 C++。本书这一版本 充分体现了这一点。
不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。 《华章科技:深入理解C++11:C++11新特性解析与应用》一共8...