• map


    map 平衡二叉树关系(联)式容器(已序)

    字典 map<拼音,汉字>

    map是一个容器,里面每一个元素分为两个逻辑块 其中一个逻辑区块叫做key(药匙) 另一个逻辑区块叫做value(值)

    map是一个已序容器 元素进入容器会有一个排序的操作,通过key的大小进行排序,默认升序

    map的元素中的key及value两者都必须是可以赋值和拷贝

    key是必须可以被比较的 如果key是一个自定义类型,重载运算符(根据key值查找元素赫努埃,根据value查找运算符很慢)

    最快的查找方式 :二分查找(折半查找)

    使用计算机解决实际问你 分析问题涉及的数据 合理组织数据 规划解决问题的算法的过程

    算法:解决问题的流程

    时间复杂度:运行时间

    空间复杂度:指令空间、数据空间、环境栈空间

    set理解为key和value是同一个数值的map

    multimap允许出现多个重复的key值

    map中key是唯一的 如果出现了多个key 后面的value覆盖前面的value

    m.erase(5) 删除key为5的元素 这个key和对应的value都会被删除

    三种插入方式:

    m.insert(pair<int,string>(4,"1234"));//通过pair进行插入

    m.insert(map<int,string>::value_type(5,"1234")); //通过map内部定义的一个结构进行插入

    m.insert(make_pair(3,"1234"));//通过std里面的一个函数进行插入

     1 // map.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<vector>
     6 #include <string>
     7 #include <map>
     8 #include <set>
     9 #include <xfunctional>
    10 using namespace std;
    11 
    12 class Cstu{
    13     char*name;
    14     char age;
    15     float height;
    16 };
    17 
    18 int _tmain(int argc, _TCHAR* argv[])
    19 {
    20     //set<int> s1;//set的key和value是同一数值的map
    21     //s1.insert(1);
    22     //s1.insert(2);
    23     //multimap<int,double> m;
    24     ////m[1] = 1.1;不可以这样添加
    25     ////multimap的插入元素的方式
    26     //m.insert(std::make_pair(1, 1.10));
    27     //m.insert(std::make_pair(1, 1.11));
    28     //m.insert(std::make_pair(1, 1.12));
    29     //m.insert(std::make_pair(2, 1.10));
    30     ////添加迭代器
    31     //multimap<int,double>::iterator mit;
    32     //mit = m.find(1);
    33     //mit++;
    34     //mit = m.lower_bound(1);//返回key为1的第一个可插入位置
    35     //mit = m.lower_bound(1);//返回key为1的最后一个可插入位置
    36     //printf("key=%d,value=%f
    ", mit->first, mit->second);
    37     //for (mit = m.begin(); mit != m.end(); ++mit)
    38     //{
    39     //    printf("key = %d,value = %f
    ", mit->first, mit->second);
    40     //}
    41     //map<double, string, std::greater<double>> m1;//降序
    42     //m1[1.1] = "zhang san";
    43     //m1[0.44] = "li si";
    44     //m1[3.21] = "wang wu";
    45     //m1[1.1] = "abc";
    46 
    47     //map<double, string, std::greater<double>>::iterator mit1;
    48 
    49     //for (mit1 = m1.begin(); mit1 != m1.end(); ++mit1)
    50     //{
    51     //    printf("key = %f,value = %s
    ", mit1->first, mit1->second.c_str());//c_str保证输出类型为字符串
    52     //}
    53     //vector<int> v;
    54     //v[1];
    55     //Cstu s;
    56     map<string, Cstu> m4;
    57     map<int, Cstu> m3;
    58     map<int, string> m2;
    59     m2[17] = "zhang san";
    60     m2[2] = "li si";
    61     m2[5] = "wang wu";
    62     m2[2] = "abc";
    63     m2.erase(5);
    64     m2.insert(pair<int, string>(4, "1234"));//通过pair进行插入
    65 
    66     m2.insert(map<int, string>::value_type(5, "1234")); //通过map内部定义的一个结构进行插入
    67 
    68     m2.insert(make_pair(3, "1234"));//通过std里面的一个函数进行插入
    69     map<int, string>::iterator mit2;
    70     mit2 = m2.find(17);
    71     printf("key = %d,value = %s
    ", mit2->first, mit2->second.c_str());
    72     printf("//================
    ");
    73 
    74     for (mit2 = m2.begin(); mit2 != m2.end(); ++mit2)
    75     {
    76         printf("key = %d,value = %s
    ", mit2->first, mit2->second.c_str());
    77     }
    78 
    79     map<int, double> m;
    80     m[1] = 3.14;//m表示一个容器,在这个容器里面有一个元素,这个元素的key为1,值映射为3.14
    81     m[5] = 1.11;
    82     m[2] = 4.54;
    83     m[10] = 5.43;
    84     map<int, double>::iterator mit;
    85     for (mit = m.begin(); mit != m.end(); ++mit)
    86     {
    87         printf("key = %d,value = %f
    ", mit->first,(*mit).second);
    88     }
    89     return 0;
    90 }
  • 相关阅读:
    修改MFC标题栏上的图标
    【转】子窗口刷新父窗口的问题
    水晶报表添加引用
    【转】MetadataType的使用,MVC的Model层数据验证
    poj 1556 The Doors 线段相交判断+最短路
    poj 1269 Intersecting Lines 求直线交点 判断直线平行共线
    string 函数操作
    poj 1066 Treasure Hunt 线段相交判断
    poj 1410 Intersection 线段相交判断
    poj 3347 Kadj Squares 扩大数据化整数
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11438359.html
Copyright © 2020-2023  润新知