使用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

 

你可能感兴趣的:(String)