STL中的容器有顺序容器 (vector,list,deque),关联容器(map,set)还有一些其他容器。
根据不同的场合选择不同的容器,会有意想不到的收获。Map是单词mapping(映射)的缩写Set是单词set(集合)的意思;Map和set内部的元素不可以重复,这一点不同于multimap和multiset。map 和 set使用相同的数据结构,其内部实现都是R-B树,不同的是其中的Iterator的格式不一样,map使用pair这种配对的数据,并根据pair中第一个元素的值进行排序,而set的iterator并不具备天生的pair类型的元素,直接根据其中的元素进行排序,下面的伪码也许可以更清楚的表述: C++ Code
1 2 | typedef template < class Key, class Value> rb_tree< pair<Key, Value> > map; typedef template < class T> rb_tree< T > set; |
map的节点是一对数据,set的节点是一个数据。
map的形式 map<type1, type2> mymap;set的形式 set<type> myset; 一般map是对有关联的事物存储,操作。 set是对一个字段进行存储,操作。