stl中:
Map使用关键值Key来唯一标识每一个成员 map可以重复。
set是集合
map是映射
集合中的元素不能重复,set可以进行集合的各种操作(交并补等),当然你也可以用list或vector实现set,但是效率会很低。set一般是用平衡树或哈西表实现的。
映射是一种一一对应的关系,哈西表也可以看作是映射的一种。映射通常可用来实现字典结构(dictionary)
map和set使用相同的数据结构,只是其中的iterator的格式不一样,map使用pair这种配对的数据,并根据pair中第一个元素的值进行排 序,而set的iterator并不具有天生的pair类型的元素,直接根据其中的元素进行排序,看下面的伪码可能更清楚:
typedef template<class Key, class Value> rb_tree< pair<Key,Value> > map;
typedef template<class T> rb_tree< T > set;
