posts - 43,comments - 3,trackbacks - 0
C++ Standard提供了四种Associative Container Classes:set、map、multiset、multimap,这四个都是Sorted Associative Container的model。SGI STL扩展了Hashed Associative Containers。

set<Key, Compare, Allocator>,是一种Simple Associative Container,意指value type与其key type都是key。它同时是Unique Associative Container,表示没有两个元素相同。其元素一定会以递增顺序排序。和list一样安插和移除元素不会使iterator实效。可以用二叉查找树来实现。

multiset表示可以容纳两个或更多个相同元素,这也是set与multiset唯一不同之处。

map<Key, T, Compare, Allocator>,是一种Sorted Associative Container可以将型别为Key的objets与型别为T的objects系结在一起。它是一种Pair Associative Container,其中value_type为pair<const Key, T>。它同时也是Unique Associative Container。安插和删除元素不会使iterator失效。当map作为关联数组时,可以使用operator[] 来检索元素,它可以实现insert的功能,但区别是它返回的是引用,当某个key不存在时,首先插入默认的T value,然后返回该处值得引用。

multimap表示可以容纳两个或更多个相同元素,这也是map与multimap唯一不同之处。

SGI STL扩展的Hashed Associative Containers有 hash_set      hash_multiset       hash_map     hash_multimap
posted on 2008-02-12 00:18 RUI 阅读(251) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理