STL中的map/multimap小结

    添加时间:2013-8-10 点击量:

    (1)应用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的接洽关系式容器一样,map/multimap凡是以均衡二叉树来完成
    

    (2)namespace std{
    template <class key, class T, class Compare = less<key>,
    class Allocator = allocator<pair<const key, T> > >
    class map;
    template <class key, class T, class Compare = less<key>,
    class Allocator = allocator<pair<const key, T> > >
    class multimap;
    }
    第一个template参数被算作元素的key,第二个算作元素的value。key/value必须具备assignable和copyable性质,对排序而言key必须是comparable。第三个参数为排序准则,和map/multimap一样这个排序准则必须是strict weak ordering的,元素的次序由他们的key决意,和value无关,map/multimap按照元素的key主动对元素进行排序。

    (3)map/multimap的操纵函数:
    map c 产生一个空map/multimap
    map c(op) 以op为排序准则产生一个空map/multimap
    map c1(c2) 产生某一个map/multimap的副本
    map c(beg, end) 以区间[beg, end)内的元素产生一个map/multimap
    map c(beg, end, op) 以op为排序准则,以区间[beg, end)内的元素产生一个map/multimap
    c.~map() 烧毁所有元素,开释内存
    此中map可为下列情势:map<Key, Elem>、map<Key, Elem, op>、multimap<Key, Elem>、multimap<Key, Elem, op>

    c.size() 返回当前的元素数量
    c.empty() 断定c是否为空
    c.max_size() 返回可容纳的元素最大数值
    c1 compare c2 compare可为==,!=,<,>,<=和>=

    c.count(elem) 返回“键值便是key”的元素个数
    c.find(elem) 返回“键值便是key”的第一个元素的迭代器,若是找不到就返回end()
    c.lower_bound(key) 返回“键值为key”之元素的第一个可安插地位,也就是“键值>=key”的第一个元素地位
    c.upper_bound(key) 返回“键值为key”之元素的最后一个可安插地位,也就是“键值>key”的第一个元素地位
    c.equal_range(key) 返回“键值为key”之元素的第一个和最后一个可安插地位,也就是“键值==key”的元素区间
    lower_bound()、upper_bound()和equal_range()行动与set响应的函数十分类似,独一不合的是:元素是一个key/value pair。

    c1 = c2 将c2全部元素赋值给c1
    c1.swap(c2) 将c1和c2元素互换

    c.begin() 返回一个双向存取迭代器(将key视为常数),指向第一个元素
    c.end() 返回一个双向存取迭代器(将key视为常数),指向最后元素的下一个地位
    c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一个元素
    c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一个地位
    这里的元素是一个key/value pair(pair<const key, T>)。

    c.(elem) 插入一个elem副本并返回新元素的地位
    c.(it, elem) 安插elem副本返回新元素的地位(it是一个提示指出安插操纵的搜寻出发点)
    c.(beg, end) 插入区间[beg, end)内的所有元素副本,无返回值
    c.erase(elem) 移除“value与elem相等”的所有元素,返回被移除元素的个数
    c.erase(it) 移除it地位上的元素,无返回
    c.erase(beg, end) 移除[beg, end)区间内的所有元素,无返回
    c.clear() 将容器清空
    这里的元素是一个key/value pair(pair<const key, T>)。


      

    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: