明飞的技术园地

笨鸟先飞
  博客园  :: 新随笔  :: 联系 :: 管理

stl map一对多用法

Posted on 2008-07-16 15:35  明飞  阅读(2643)  评论(0编辑  收藏  举报

下面代码实现一对多的关系

// stlMap.cpp : Defines the entry point for the console application.
//
#pragma warning (disable : 4786 ) 
#include 
"stdafx.h"
#include 
<map>;
#include 
<string>
#include 
<iostream>
#include 
<stdlib.h>
#include 
<list>;
using namespace std;

int main(int argc, char* argv[])
{

    typedef std::list
<std::string> StringList;
    map
<string,StringList>map_roster;
    map
<string,StringList>::iterator iter;
    
    StringList slMing;

    slMing.push_back(
"mingfei1ÌõÏûÏ¢");
    slMing.push_back(
"mingfei2ÌõÏûÏ¢");
    map_roster[
"mingfei"]=slMing;

    slMing.erase(slMing.begin(),slMing.end());

    slMing.push_back(
"1ÌõÏûÏ¢");
    slMing.push_back(
"2ÌõÏûÏ¢");
    slMing.push_back(
"3ÌõÏûÏ¢");

    map_roster[
"ydp"]=slMing;

    iter
=map_roster.find("mingfei");
//     for (;iter!=map_roster.end(); iter++)
//    {
     cout<<iter->first<<endl;
     StringList::const_iterator g 
= (*iter).second.begin();
     
for (;g!=(*iter).second.end();g++)
     
{
         cout
<<(*g).c_str()<<endl;
     }


//}


    
/*
    StringList::const_iterator it2=(*iter).second.begin();

        for (;it2<(*iter).second.end();it2++)
        {
            //cout<<(*it2).c_str()<<endl;
            cout<<"333"<<endl;
        }
*/


    

    system(
"pause");
    
return 0;
}