使用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++标准库都是不可或缺的支持。通过理解这些...
本资料包“C++编程基础标准库编程”聚焦于C++中的STL使用,包括了ISO镜像文件以及相关代码示例,旨在帮助初学者深入理解和掌握这一关键领域。 1. **C++简介**: C++是一种通用的、面向对象的编程语言,由Bjarne ...
掌握C++标准库对于提高编程效率至关重要。 ### 输入输出流 在C++中,`iostream`头文件定义了基本的输入输出流对象,如`cin`、`cout`。此外,`fstream`提供了文件输入输出的支持,如`ifstream`、`ofstream`等。这些...
《C++标准库》这本书不仅全面覆盖了C++标准库的知识体系,还提供了丰富的实践案例,非常适合有一定C++基础的学习者作为参考书使用。通过对本书的学习,读者不仅可以掌握标准库的基本用法,还能深入了解其背后的原理...
C++标准库是C++编程语言的核心组成部分,它提供了一系列预先定义的数据结构、函数和算法,使得程序员可以高效地编写...通过深入学习和熟练掌握C++标准库,开发者可以充分利用C++的强大功能,提高编程效率和代码质量。
总之,《C++标准模板库编程实战》是一本全面而深入的教程,适合有一定C++基础并希望提升STL使用技巧的开发者。它将引导读者探索C++14的新特性,以及如何有效地利用STL来设计和实现高效、可维护的程序。无论是新手...
总的来说,"C++标准库chm"是一个非常有用的参考资料,对于学习和使用C++标准库的开发者来说,它提供了便捷的查询工具和详尽的说明,有助于提升编程技能和效率。通过阅读和实践CHM文件中的内容,开发者可以更好地掌握...
总之,《C++标准库第二版》是C++开发者不可或缺的参考资料,它深入浅出地介绍了C++11的新特性,并详细讲解了STL的使用和多线程编程,帮助读者掌握现代C++的精髓,提升编程技能。通过阅读和实践书中的例子,开发者...
STL是C++标准库的核心部分,它提供了一组高效的数据结构和算法,极大地提高了C++程序的开发效率。通过学习STL,开发者可以更好地掌握C++的模板机制,并能编写出高效、模块化的代码。 《C++标准库(第二版)》这本书...
总的来说,《超越C++标准库——Boost程序库导论》这本书详尽地介绍了Boost库的各种组件及其用法,是深入理解C++和提升编程效率的重要资源。通过学习和应用Boost,开发者不仅可以提高代码质量和性能,还能掌握更多...
通过《C/C++标准库手册》,开发者可以系统地学习和掌握这些内容,从而更好地利用标准库来解决问题,提高代码的可读性和可维护性。同时,理解和熟练运用标准库能避免重复造轮子,减少错误,提高程序的可靠性。因此,...
C++标准库是C++编程语言的核心组成部分,它提供了一系列预先定义好的函数、类和对象,使得程序员能够高效地编写程序。C++标准库不仅包括了C语言的标准库...学习并熟练运用C++标准库,能够显著提升C++编程的效率和质量。
"中文版的小MSDN"虽然可能没有涵盖C++的所有细节,但它对于理解和使用C++标准库来说已经非常有价值。开发者可以通过查阅这个文档,快速找到所需的标准库功能,并了解其使用方法。在实际编程中,熟练掌握并合理运用...
使用这本书,开发者不仅可以深入理解C++标准库的各项功能,还能了解到如何有效地利用这些工具来优化代码、提高程序性能。无论是初学者还是经验丰富的C++开发者,都能从中受益匪浅,尤其是在面对大型项目或需要高性能...
《超越C++标准库 - Boost程序库导论》是一本深度探讨C++编程技术的书籍,专注于Boost库的使用和理解。Boost库是C++社区广泛认可的一套开源库,它扩展了C++的标准库,提供了许多高效、高质量的工具和组件,用于解决...
Boost库是C++标准库以外的一个广泛使用的、跨平台的、开源的编程库集合,它包含了一系列以Boost命名的C++库。这些库覆盖了各个领域,包括字符串处理、泛型编程、并发编程等。在元编程方面,Boost库提供了元编程库...