STL
521
学海无边
展开
-
Effective STL 条款1
仔细选择你的容器你知道C++中有很多你可以支配的容器,但是你意识到有多少吗?要确定你没有忽略你的选项,这里有一个快速回顾。标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。(“rope”是一原创 2004-12-31 01:30:00 · 1114 阅读 · 0 评论 -
Boost 库中的实用工具类使用入门
级别: 中级Arpan Sen, 首席工程师, IBM 2008 年 9 月 08 日实用工具类开发和维护会耗费程序员的时间。Boost 通过提供几个高质量的库,从而简化了此过程,您可以将这些库轻松集成到现有的代码库中。本文简单概述一些较流行的 Boost 实用工具类,并帮助您了解如何将它们投入使用。实用工具类(utility classes)在几乎任何适当规模的 C++ 项目中都转载 2008-09-30 13:22:00 · 803 阅读 · 0 评论 -
Beyond the C++ Standard Library: An Introduction to Boost
Beyond the C++ Standard Library: An Introduction to BoostBy Björn Karlsson ...............................................Publisher: Addison Wesley Professional Pub Date: August 31, 2005 ISBN: 0321133原创 2005-11-14 12:47:00 · 1360 阅读 · 0 评论 -
Effective STL 条款37
条款37:用accumulate或for_each来统计区间有时候你需要把整个区间提炼成一个单独的数,或,更一般地,一个单独的对象。对于一般需要的信息,有特殊目的的算法来完成这个任务,比如,count告诉你区间中有多少元素,而count_if告诉你有多少元素满足一个判断式。区间中的最小和最大值可以通过min_element和max_element获得。但有时,你需要用一些自定义的方式统计(原创 2004-12-31 01:27:00 · 903 阅读 · 0 评论 -
Effective STL 条款35
条款35:通过mismatch或lexicographical比较实现简单的大小写无关字符串比较一个STL菜鸟最常问的问题是“我怎么使用STL来进行大小写无关的字符串比较?”这是一个令人迷惑的简单问题。大小写无关字符串比较要么真的简单要么真的困难,依赖于你要多一般地解决这个问题。如果你忽略国际化问题而且只关注于设计成字符串strcmp那样的类型,这个任务很简单。如果你要有strcmp不具有的按原创 2004-12-31 01:25:00 · 985 阅读 · 0 评论 -
Effective STL Item 43:优先使用STL泛型算法以取代手写循环
STL泛型算法vs.手写的循环Scott Meyers准备进行优化?别那么急。Scott正试图让你相信库函数比你自己写的更好。-------------------------------------------------------------------------------[这篇文章源自一本即将出版的书。S. Meyers,Effective STL:50 Specific Ways t原创 2004-12-31 01:24:00 · 6367 阅读 · 0 评论 -
Effective STL条款29
需要一个一个字符输入时考虑使用istreambuf_iterator假设我们要把一个文本文件拷贝到一个字符串对象中。似乎可以用一种很有道理的方法完成:ifstream inputFile("interestingData.txt");string fileData((istream_iterator(inputFile)), // 把inputFile读入 istream_iterat原创 2004-12-31 01:42:00 · 1102 阅读 · 0 评论 -
Effective STL前言
It came without ribbons!It came without tags! It came without packages, boxes or bags!——Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957我第一次写关于Standard Template Library的东西是在1995年,那时,我决原创 2004-12-31 01:41:00 · 1306 阅读 · 2 评论 -
Effective STL 目录
容器条款1: 仔细选择你要的容器 条款2: 小心对“容器无关代码”的幻想 条款3: 使容器里对象的拷贝操作轻量而正确 条款4: 用empty来代替检查size是否为0 条款5: 尽量使用范围成员函数代替他们的单元素兄弟 条款6: 警惕C++的及其令人恼怒的分析 条款7: 当使用new得指针的容器时,切记在容器销毁前delete那些指针 条款8: 千万不要把aut原创 2004-12-31 01:39:00 · 1104 阅读 · 0 评论 -
Effective STL条款16
条款16: 如何将vector和string的数据传给传统的API因为 C++语言已经于1998年被标准化,C++的中坚分子在努力推动程序员从数组转到vector时就没什么顾虑了。同样显然的情况也发生于尝试使开发者从char*指针迁移到string对象的过程中。有很好的理由来做这些转变,包括可以消除常见的编程错误(参见条款13),而且有机会获得STL算法的全部强大能力(比如参见条款31)。原创 2004-12-31 01:35:00 · 884 阅读 · 0 评论 -
Effective STL条款44
条款44: 尽量用成员函数代替同名的算法有些容器拥有和STL算法同名的成员函数。关联容器提供了count、find、lower_bound、upper_bound和equal_range,而list提供了remove、remove_if、unique、sort、merge和reverse。大多数情况下,你应该用成员函数代替算法。这样做有两个理由。首先,成员函数更快。其次,比起算法来,它们与容器原创 2004-12-31 01:34:00 · 933 阅读 · 0 评论 -
Effective STL条款21
条款21: 永远让比较函数对相等的值返回false让我向你展示一些比较酷的东西。建立一个set,比较类型用less_equal,然后插入一个10:set > s; // s以“<=”排序s.insert(10); // 插入10现在尝试再插入一次10:s.insert(10);对于这个insert的调用,set必须先要判断出10是否已经位于其中了。 我们知道它是原创 2004-12-31 01:32:00 · 1258 阅读 · 1 评论 -
[转]Boost Test Library
boost 的 Test test 库中有如下的组件: Execution Monitor 一个基本用于 program 和 test program 的异常与错误检测与报告机制,Execution Monitor 调用用户提供的函数并报告所有捕获的运行时的异常,它只被其他 Boost Test Library components 内部调用,当然也可以用于一些 productio原创 2010-05-03 00:56:00 · 1502 阅读 · 0 评论