Map中放置类指针并实现调用

工作中使用到多进程通信,利用到了map以及multimap来进行实现。

需要做一个简单测试例子,直接上代码。

/*
 *  main.cpp
 *  Created on: Oct 28, 2013
 *      Author: Sam.Nie
 */
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include <iostream>
using namespace std;

class AB
{
public:
    virtual void bar() = 0;
    virtual ~AB() {};
};

class A : public AB
{
    void bar() { cout << "A
"; }
};

class B : public AB
{
    void bar() { cout << "B
"; }
};

int main()
{
    printf("Hello, Sam Test Here.
");

    //map
    map<int, AB*> mapAB;
    mapAB.insert(pair<int, AB*>(1, new A));
    mapAB.insert(pair<int, AB*>(2, new B));

    map<int, AB*>::iterator it;
    for(it = mapAB.begin(); it != mapAB.end(); it++)
    {
        AB *pAB = it->second;
        pAB->bar();
        delete pAB;
    }

    //multimap
    multimap<int, AB*> multimapAB;
    multimapAB.insert(pair<int, AB*>(1, new A));
    multimapAB.insert(pair<int, AB*>(1, new B));

    multimap<int, AB*>::iterator multiit;
    for(multiit = multimapAB.begin(); multiit != multimapAB.end(); multiit++)
    {
        AB *pAB1 = multiit->second;
        pAB1->bar();
        delete pAB1;
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/winnxm/p/3393377.html