使用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\n", pA->first.c_str(), pA->second->m_iX);
40     }
41     printf("-----------------------------------\n");
42 }
43 
44 int testOne()
45 {
46     printf("%s %d %s()\n", __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\n", 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]\n", strIndex.c_str());
70             continue;
71         }
72         xMapA.erase(ppA);
73     }
74     dumpMap(xMapA);
75 
76     printf("map size : %d\n", 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
复制代码

 

posted @   fengbohello  阅读(1941)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示