Map的删除
STL Map的删除能保证平均对数时间复杂度。函数erase可以用来删除map的一个元素,也可以
删除一个范围内的元素。
iterator erase( iterator _where ); //删除iterator指向的元素
iterator erase( iterator range_start, iterator range_end); //删除从start到end的元素(不包括end)
iterator erase( const key& _key) ; //删除key
另外,也可以用clear()函数来删除map的所有元素。clear的底层实现是erase(map.begin(),map.end()).
map的swap函数
void swap( map& _right)
交换两个map的内容。map的底层实现保证swap是非常有效率的,几乎是常数时间。(通常只需要交换两个指针的值)。值得注意的是,两个map的模板类型必须是一样,否则会出错。
map元素的查找
一般的STL容器都支持find和finc_if操作。map的查找是对数时间的。对于2的32次方个元素,只需查找32次。由此可见map的高效。
find的声明:
iterator find(const Key& _Key) const;
const_iterator find(const Key& _Key) const;
如果查找成功,返回指向这个元素的迭代器,如果返回失败,则返回end()迭代器。
map返回指定元素的上下限。
返回map一个指定元素的前一个元素的迭代器和后一个元素迭代器。用
pair<iterator, iterator> equal_range(const key& _key);
pair<const_iterator, const_iterator> equal_range(const key& _key);
const_iterator lower_bound(const key& _key); // 返回指定元素的上限
iterator lower_bound(const key& _key); // 返回指定元素的上限
const_iterator upper_bound(const key& _key) // 返回指定元素的下限
iterator upper_bound(const key& _key) // 返回指定元素的下限