set 可以认为是数学上的集合,集合中的元素不允许有重复。set特有的操作是高效的插入、删除和执行基本查找。
set的插入方法是 insert,由于集合元素的唯一性,insert操作不一定会成功,insert操作返回的是一个比较复杂的类型,是一个指示插入位置和插入是否成功的复合类型。STL中定义了一个名称为pair的模板,该类模是:
pair<iterator,bool> insert( const Object & x );
pair<iterator,bool> insert( iterator hint,const Object & x );
一般情况下,双参数的insert由于指定了位置,其执行速度要比单参数的函数执行速度快。
set的删除操作有以下三种:
int erase( const object & x); 找到并删除该元素,返回删除元素的个数(0 或者 1)
iterator erase( iterator itr) ; 删除该迭代器指向的元素。
Iterator erase(iterator start, iterator end ); 删除一个区间内的元素,不包括尾部元素。
set 支持的查找操作是:
iterator find( const Object & x );
map 容器
map用来存储排序后的由键(key)和值(value)组成的项的集合。但是多个键可以共同对应一个值,因此,值不需要唯一,在map中的键保持逻辑排序后的顺序。Map 和 python中的字典是一样的道理。
Map 中存储的元素都是
Pair<KeyType,ValueTyep> 的形式。Map 的迭代器指向的也是这么一个对。
在map中执行查找操作可以使用[ ]运算符。
ValueType & operator[ ] (const KeyType & key );