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\n"; }

};



class B : public AB

{

    void bar() { cout << "B\n"; }

};



int main()

{

    printf("Hello, Sam Test Here.\n");



    //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

 

你可能感兴趣的:(map)