编程教程
您现在的位置: 中国个人站长站 >> 网络编程 >> Visual C++ >> 教程正文 Effecective STL: 容器 (条款1: 小心选择你的容器)
推荐位

Effecective STL: 容器 (条款1: 小心选择你的容器)

中国个人站长站 Visual C++ 点击数: 更新时间:2004-8-25
n         标准STL序列式容器(sequence containersvector, string, deque, and list.

 

n         标准STL关联式容器(associative containersset, multiset, map, and multimap.

 

n         非标准序列式容器(nonstandard sequence containers slist ropeslist 是一个单向链表,rope从本质上讲是一个重型的string。(一个”rope”就是一个重型”string”。明白了吗?)(有一个比喻,可以更好的理解ropestring之间的区别,rope是粗绳,string是细线。) 你可以在第50条找到这些非标准容器的简短概览(这些容器一般来讲都是可用的)。(译注:这里所说的“一般来讲都是可用的”是指大多数stl标准库都会实现这些非标准容器。)

 

n         非标准关联式容器(nonstandard associative containershash_set, hash_multiset, hash_map, hash_multimap。我会在条款25仔细讲解这些符合标准关联式容器的基于散列表的高度可用的各种类型(容器)。

 

n         String 的替代物vector<char>。条款13描述了合理替换的条件。

 

n         vector 作为标准关联式容器的替代物。在条款13中你可以看到,在时间和空间方面vector有时比标准关联式容器要做得好。

 

n         几种标准的非STL容器,包括arrays, bitset, valarray, stack, queue, priority_queue。因为这些是非STL容器,所以除了在条款16提到有一种情况使用数组要优于STL容器以及在条款18解释为什么bitset可能要好于vector<bool>,本书几乎没有讨论它们。同样,记住数组可以用于STL算法(algorithms),因为指针可以被当作数组的iterators

 

    这就是所有的选择了,考虑了各种情况,你选择容器时就应该从它们当中抽取。不幸的是,对大多数STL的讨论仅限于容器世界(world of containers)极小的一部分,而忽略了许多关于选择最合适容器的主题。即使标准本身,也只提供了下列在vector, dequelist中进行选择的指导:

 

vector, list deque 为程序员提供不同的复杂度平衡,应权衡使用。vector 是序列式容器,作为缺省使用。List应当用于频繁在序列中部进行插入和删除操作的情况。当大多数插入和删除操作发生在序列的头和尾时请选择deque

 

    如果你主要的关心是算法复杂性,我认为这个章程(constitutes)是合理的建议,但还有更多的东西需要关心。

 

    现在,我们来考虑重要的和容器相关的主题,这个主题能更好的说明算法复杂性,但是首先我要介绍一种容器分类的方法,这种方法应当被经常的讨论,但是却没有(真理总是掌握在少数人手中

上一页  [1] [2] [3] [4] 下一页

教程录入:swh    责任编辑:swh 
个人站长站与你风雨同舟!
本站所提供的资源均来源于互联网,如有侵权行为,请与本站管理员联系,我们会第一时间删除!
·如果您发现《Effecective STL: 容器 (条款1: 小心选择你的容器)》文章有错误,也请通知我们修改!
联系邮箱chinageren#126.com,谢谢支持!
站内搜索:
版权所有:中国个人站长站 2007-2008 未经授权禁止复制或建立镜像 客服QQ号:112731235
copyright © 2007-2008 www.ChinaGeRen.com online services. all rights reserved. 苏ICP备05000059号