使用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
原文地址:https://www.cnblogs.com/fengbohello/p/4123975.html