• Map和Set简单使用


    学过红黑树之后,就自然学到了map和set,作为STL中较为普遍用到的容器,我们应该熟练的使用它,下面简单介绍他们的具体使用

    map 和set的底层就是红黑树,map是K,V模型,而set是K模型。

    map的简单介绍

    这里写图片描述
    以上就是map的内部实现的成员函数,构造,插入删除,等。map作为K,V模型,可以有很多用途,比如实现一个字典。

    map实现一个字典

    #include<iostream>
    using namespace std;
    #include <map>
    #include<string>
    int main()
    {
        map<string,string> dict;
        dict.insert(make_pair("left","左边"));
        dict.insert(make_pair("right","右边"));
        dict.insert(make_pair("left","剩余"));
        dict.insert(make_pair("hello","你好"));
        map<string,string>::iterator it = dict.begin();
        while(it!=dict.end())
        {
            cout<<it->first<<":"<<it->second<<endl;
            ++it;
        }
    

    运行结果如下图
    这里写图片描述
    我们可以看到第二个left的意思并没有加进去,这是因为底层红黑树的原因,当 插入相同的元素,就不插入。所以map也可以用来去重。
    1. map中的insert如下:
    <1> pair

    string strs[] = {"hello","tmp","hello","sort","tmp","tmp","tmp",
            "left","sort","hello","hello","hello"};
        map<string,int> countmap;
        for(size_t i = 0;i<sizeof(strs)/sizeof(strs[0]);++i)
        {
            countmap[strs[i]]++;
        }

    利用了 insert的返回值 pair结构体中的第二个参数。

    set的简单使用

    insert 和map类似:
    <1>pair

    void settest()
    {
        set<int> s;
        int arr[] = {3,6,7,9,1,9,5,4};
        for(size_t i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
        {
            s.insert(arr[i]);
        }
        set<int>::iterator it = s.begin();
        while(it!=s.end())
        {
            cout<<*it<<" ";
            ++it;
        }
        cout<<endl;
    }

    注意:set没有operator[ ]
    其他的接口和map都是基本一样的,map有的它都有
    还有一个接口,介绍一下,就是count()
    size_type count (const value_type& val) const;
    他可以用来判断有没有这样一个元素

    cout<<s.count(10)<<endl;//不存在 输出0
    cout<<s.count(5)<<endl;//存在  输出1
  • 相关阅读:
    JS DataURL 整理(一)
    JavaScript 与 ECMAScript 的关系
    HTML5 多媒体之<svg>标签 使用
    HTML5 多媒体之<canvas>标签 使用
    [转]信号量---进程间通信 ---php版
    [转]使用PHP的ftok()函数实现基于linux下系统级进程间消息通信demo(消息队列模式)
    【转】php ftok 使用
    [转]Golang调度模型
    【转】如何分析golang程序的内存使用情况---很有用
    【转】Go 中对栈中函数进行内联---这篇讲的不如上一篇,也还可以吧。。
  • 原文地址:https://www.cnblogs.com/chan0311/p/9427322.html
Copyright © 2020-2023  润新知