- 博客(5)
- 收藏
- 关注
原创 Effective STL 条款23
条款23:考虑用已序vector代替关联容器 当需要一个提供快速查找的数据结构时,很多STL程序员立刻会想到标准关联容器:set、multiset、map和multimap。直到现在这很好,但不是永远都好。如果查找速度真得很重要,的确也值得考虑使用非标准的hash容器(参见条款25)。如果使用了合适的hash函数,则可以认为hash容器提供了常数时间的查找。(如果选择了不好的hash函数或表的
2003-12-23 13:57:00 1396
原创 Effective STL 条款48
条款48:总是#include适当的头文件STL编程的次要麻烦之一是虽然可以很容易地建立可以在一个平台上编译的软件,但在其它平台上则需要附加的#include指示。这个烦恼来自一个事实:C++标准(不像C标准)未能指定哪一个标准头文件必须或者可能被其他标准头文件#include。由于有了这样的灵活性,不同的实现就会选择去做不同的东西。 这在实践中意味着什么?我可以给你一些的概念。我使用了五
2003-12-23 13:51:00 1224
原创 Effective STL 条款4
条款4:用empty()来代替检查size()是否为0 对于任意容器c,写下 if (c.size() == 0)... 本质上等价于写下 if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。 你应该首选empty()的构造,而且理由很简单:对于所有的标准容器
2003-12-23 13:50:00 1373
原创 Effective STL 条款3
条款3:使容器里对象的拷贝操作轻量而正确 容器容纳了对象,但不是你给它们的那个对象。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。取而代之的是,当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。当你从容器中获取一个对象时(比如通过front或back),你取到的是容器中那个对象的拷贝。拷进去,拷出来。这就是STL的方
2003-12-23 13:48:00 1541
原创 Effective STL 条款1:仔细选择你的容器
条款1:仔细选择你的容器 你知道C++中有很多你可以支配的容器,但是你意识到有多少吗?要确定你没有忽略你的选项,这里有一个快速回顾。 标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串
2003-12-23 13:46:00 2100
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人