• 使用STL map 用 string 做索引 插入删除数据


    1、代码

     1 #include <map>
     2 #include <string>
     3 #include <stdio.h>
     4 #include <vector>
     5 #include <stdlib.h>
     6 
     7 using namespace std;
     8 
     9 class A
    10 {
    11     public:
    12         int m_iX;
    13 
    14     public :
    15         A();
    16         A(int i);
    17         ~A();
    18 };
    19 
    20 A::A()
    21 {
    22 }
    23 
    24 A::A(int i)
    25 {
    26     m_iX = i;
    27 }
    28 
    29 A::~A()
    30 {
    31 }
    32 
    33 typedef map<string, A *> MapA;
    34 
    35 void dumpMap(MapA & xMapA)
    36 {
    37     for(MapA::iterator pA = xMapA.begin(); pA != xMapA.end(); pA++)
    38     {
    39         printf("index : %s , value : %3d
    ", pA->first.c_str(), pA->second->m_iX);
    40     }
    41     printf("-----------------------------------
    ");
    42 }
    43 
    44 int testOne()
    45 {
    46     printf("%s %d %s()
    ", __FILE__, __LINE__, __func__);
    47 
    48     MapA xMapA;
    49 
    50     for(int i = 0; i < 20; i++)
    51     {
    52         A * a = new A(i);
    53         char szIndex[32] = {0};
    54         snprintf(szIndex, sizeof(szIndex), "%03d", i);
    55         string strIndex = szIndex;
    56         xMapA.insert(make_pair(strIndex, a));
    57     }
    58     dumpMap(xMapA);
    59     printf("map size : %d
    ", xMapA.size());
    60     for(int i = 0; i < 20; i+=2)
    61     {
    62         A * a = new A(i);
    63         char szIndex[32] = {0};
    64         snprintf(szIndex, sizeof(szIndex), "%03d", i);
    65         string strIndex = szIndex;
    66         MapA::iterator ppA = xMapA.find(strIndex);
    67         if(ppA == xMapA.end())
    68         {
    69             printf("can not find : [%s]
    ", strIndex.c_str());
    70             continue;
    71         }
    72         xMapA.erase(ppA);
    73     }
    74     dumpMap(xMapA);
    75 
    76     printf("map size : %d
    ", xMapA.size());
    77 
    78     return 0;
    79 }
    80 
    81 int main(int argc, char * argv[])
    82 {
    83     testOne();
    84     return 0;
    85 }

    2、执行结果

    ./test-map 1
    test-map.cpp 46 testOne()
    index : 000 , value :   0
    index : 001 , value :   1
    index : 002 , value :   2
    index : 003 , value :   3
    index : 004 , value :   4
    index : 005 , value :   5
    index : 006 , value :   6
    index : 007 , value :   7
    index : 008 , value :   8
    index : 009 , value :   9
    index : 010 , value :  10
    index : 011 , value :  11
    index : 012 , value :  12
    index : 013 , value :  13
    index : 014 , value :  14
    index : 015 , value :  15
    index : 016 , value :  16
    index : 017 , value :  17
    index : 018 , value :  18
    index : 019 , value :  19
    -----------------------------------
    hash size : 20
    index : 001 , value :   1
    index : 003 , value :   3
    index : 005 , value :   5
    index : 007 , value :   7
    index : 009 , value :   9
    index : 011 , value :  11
    index : 013 , value :  13
    index : 015 , value :  15
    index : 017 , value :  17
    index : 019 , value :  19
    -----------------------------------
    hash size : 10
    over
  • 相关阅读:
    DOMContentLoaded
    闭包之外的解决方法
    前端单页面应用路由
    zepto的tap事件点透问题
    微服务实践指南☞Kong网关的简介和安装
    Visual studio docker build no such file or directory
    Saas物联网共享平台实战
    dotnetty源码解读一些要点
    Ubuntu 安装 JDK 7 / JDK8 的两种方式
    spring入门笔记-(一)、spring boot HelloWorld
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4123975.html
Copyright © 2020-2023  润新知