用map嵌套vector实现multimap功能

11 篇文章 0 订阅
1 篇文章 0 订阅

最近迷上了泛型编程,在一个项目中需要用到一个变长映射,于是用map+vector+结构体实现了multimap的基本功能。

特改个demo存档。

//---------------------------------------------------------------------------
#include <map>
#include<vector>
#include <string>
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------
typedef struct test
{
    char nn[8];
    int xx;
    int yy;
}  Mystruct;

typedef vector< Mystruct>  Myvctor;
typedef map<int,Myvctor>  Mymap;

int main(int argc, char *argv[])
{
    Mystruct st1[2]= {{"aa",12,34},{"bb",21,43}};
    Mystruct st2[3]= {{"AA",11,22},{"BB",33,44},{"CC",55,66}};
    Myvctor myvctor(st1,st1+2);  //直接把数组初始化进来
    Mymap mymap;
    mymap.insert(pair<int,Myvctor>(1,myvctor));
    myvctor.clear();
    for(int i=0; i<sizeof(st2)/sizeof(st2[0]); i++)
        myvctor.push_back(st2[i]);
    mymap.insert(pair<int,Myvctor>(3,myvctor));
    cout<<"*******  遍 历  *******" <<endl;    //遍历
    cout<<"ID :nn  xx  yy" <<endl;
    cout<<"==================================" <<endl;
    Mymap::iterator iter;
    for(iter = mymap.begin(); iter != mymap.end(); iter++)
    {
        Myvctor::iterator it;
        for(it = iter->second.begin(); it != iter->second.end(); it++)
        {
            cout<<iter->first <<" : "<< (*it).nn<<", "<<(*it).xx<<", "<<(*it).yy<<", "<<endl;
        }
        cout<<"==================================" <<endl;
    }
    cout<<"\n*******  查询= 3  *********" <<endl;         //查询
    iter=  mymap.find(3);
    if(iter != mymap.end())
    {
        Myvctor::iterator it;
        for(it = iter->second.begin(); it != iter->second.end(); it++)
        {
            cout<<iter->first <<" : "<< (*it).nn<<", "<<(*it).xx<<", "<<(*it).yy<<", "<<endl;
        }
        cout<<"=====================" <<endl;
    }
    system("pause");
    return 0;
}
//---------------------------------------------------------------------------

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值