C++ 映射map的使用心得

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BlueCY/article/details/68951793

在写获取时间的函数时,想到映射的变量,心血来潮就查了些资料。

map的功能:
1. 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
2. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
3. 快速插入Key - Value 记录。
4. 快速删除记录
5. 根据Key 修改value记录。
6. 遍历所有记录。

本人只发现map多用于查找很方便快捷,尤其是以键和值的形式存在的!大量数据中使用map,查询效率会很高。
改了原本用字符指针实现的中文日期,具体代码如下:`

string getTimeNowMap()
{
    SYSTEMTIME sys;
    GetLocalTime(&sys);
    char nowTime2[40];
    map<int, string>xqMap;
    //map<int, string>::iterator iter;
    //初始化列表对map进行赋值
    xqMap = {
        { 0, "星期天" },
        { 1, "星期一" },
        { 2, "星期二" },
        { 3, "星期三" },
        { 4, "星期四" },
        { 5, "星期五" },
        { 6, "星期六" },
    };
    /*
    xqMap.insert(pair<int, string>(0, "星期天"));
    xqMap.insert(pair<int, string>(1, "星期一"));
    xqMap.insert(pair<int, string>(2, "星期二"));
    xqMap.insert(pair<int, string>(3, "星期三"));
    xqMap.insert(pair<int, string>(4, "星期四"));
    xqMap.insert(pair<int, string>(5, "星期五"));
    xqMap.insert(pair<int, string>(6, "星期六"));*/
        sprintf_s(nowTime2, "%4d/%02d/%02d %03s %02d:%02d:%02d.%03d"
        , sys.wYear, sys.wMonth, sys.wDay
        ,(xqMap[sys.wDayOfWeek]).c_str()
        //,(xqMap.find(sys.wDayOfWeek)->second).c_str()
        , sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);
    //cout << sizeof(nowTime2)<<nowTime2<<endl;
    return nowTime2;
}`

也可以这样用,处理学号姓名映射

    map<int, string> student;
    student.insert(pair<int, string>(54090101, "Mike"));
    student.insert(pair<int, string>(54090102, "MIKE"));
    student.insert(map<int, string>::value_type(54090103, "Sam"));
    student.insert(map<int, string>::value_type(54090104, "SAM"));
    student[54090105] = "Jake";
    student[54090105] = "JAKE";//键值为标识,重复插入,结果为替换
    studentMessage[54090104] = "Bob";
    studentMessage[54090105] = "Ben";

//遍历
    map<int, string>::iterator iter;
    for (iter = student.begin(); iter != student.end(); ++iter)
    {
        cout << iter->first << ": " << iter->second << endl;
    }

这里用到了批量向map中添加内容。有关map的基本操作可参考:
C++ map的基本操作和使用:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html

展开阅读全文

没有更多推荐了,返回首页