stlinacm.doc.docVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stlinacm.doc

STL简介 1.1????? STL是什么 作为一个C++程序设计者,STL是一种不可忽视的技术。 Standard Template Library (STL):标准模板库,更准确的说是 C++ 程序设计语言标准模板库。STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的。也就是说同一段STL代码在不同编译器和操作系统平台上运行的结果都是相同的,但是底层实现可以是不同的。 令人兴奋的是,STL的使用者并不需要了解它的底层实现。 试想一下,如果我们有一把能打开所有锁的钥匙,那将是多么令人疯狂啊。 STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什么。它被内建在你的编译器之内。 2????? 为什么我们需要学习STL STL是 C++的ANSI/ISO 标准的一部分,可以用于所有C++语言编译器和所有平台(Windows/Unix/Linux..)。STL的同一版本在任意硬件配置下都是可用的; STL 提供了大量的可复用软件组织。例如,程序员再也不用自己设计排序,搜索算法了,这些都已经是STL的一部分了。嘎嘎,有意思吧。 使用STL 的应用程序保证了得到的实现在处理速度和内存利用方面都是高效的,因为STL设计者们已经为我们考虑好了。 使用STL编写的代码更容易修改和阅读,这是当然的啦。因为代码更短了,很多基础工作代码已经被组件化了; 使用简单,虽然内部实现很复杂。 虽然,STL的优点甚多,但是STL的语法实在令初学者人头疼,许多人望而却步。可是STL是每个C++程序设计者迟早都要啃的一块骨头。 3????? 初识STL 下面让我们来看几段代码吧: #include iostream int main(void) { double a[] = {1, 2, 3, 4, 5}; std::coutmean(a, 5)std::endl; // will print 3 return 0; } 好懂吧,除了那个std有点让人不舒服以外,这是一段普通的没有使用STL的C++代码。 再看下面一段: #include vector #include iostream int main() { std::vectordouble a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(5); for(int i = 0; i a.size(); ++i) { std::couta[i]std::endl; } return 0; } 如果你真的没有接触过STL的话,你会问,呀, 是啥呀?这是一段纯种的STL代码,看到尖括号了吧,知道那是模板了吧。看到你不感觉奇怪么?可是我们并没有定义这些函数啊。 #include vector #include iostream int main() { std::vector int q; q.push_back(10); q.push_back(11); q.push_back(12); std::vector int v; for(int i=0; i5; ++i){ v.push_back(i); } std::vectorint::iterator it = v.begin() + 1; it = v.insert(it, 33); v.insert(it, q.begin(), q.end()); it = v.begin() + 3; v.insert(it, 3, -1); it = v.begin() + 4; v.erase(it); it = v.begin() + 1; v.erase(it, it + 4); v.clear(); return 0; } 这一段你又看到了新东西了吧:iterator、insert、erase、clear。不罗嗦了,等你看完这篇文章,回头再看就简单了。 关于模板的其他细节,读者可以参阅《C++ Templates 中文版》在这里,简单的介绍一下模板类和函数模板的概念。 模板是C++中实现代码重用机制的一种工具,可以实现类型参数化,把类型定义为参数。函数模板和类

您可能关注的文档

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档