stl map一对多用法

图片 1

// stlMap.cpp : Defines the entry point for the console application.
图片 2//
图片 3#pragma warning (disable : 4786 ) 
图片 4#include “stdafx.h”
图片 5#include <map>;
图片 6#include <string>
图片 7#include <iostream>
图片 8#include <stdlib.h>
图片 9#include <list>;
图片 10using namespace std;
图片 11
图片 12int main(int argc, char* argv[])
图片 13{
图片 14
图片 15    typedef std::list<std::string> StringList;
图片 16    map<string,StringList>map_roster;
图片 17    map<string,StringList>::iterator iter;
图片 18    
图片 19    StringList slMing;
图片 20
图片 21    slMing.push_back(“mingfei1ÌõÏûÏ¢”);
图片 22    slMing.push_back(“mingfei2ÌõÏûÏ¢”);
图片 23    map_roster[“mingfei”]=slMing;
图片 24
图片 25    slMing.erase(slMing.begin(),slMing.end());
图片 26
图片 27    slMing.push_back(“1ÌõÏûÏ¢”);
图片 28    slMing.push_back(“2ÌõÏûÏ¢”);
图片 29    slMing.push_back(“3ÌõÏûÏ¢”);
图片 30
图片 31    map_roster[“ydp”]=slMing;
图片 32
图片 33    iter=map_roster.find(“mingfei”);
图片 34//     for (;iter!=map_roster.end(); iter++)
图片 35//    {
图片 36     cout<<iter->first<<endl;
图片 37     StringList::const_iterator g = (*iter).second.begin();
图片 38     for (;g!=(*iter).second.end();g++)
图片 39     {
图片 40         cout<<(*g).c_str()<<endl;
图片 41     }
图片 42
图片 43//}
图片 44
图片 45
图片 46    /*
图片 47    StringList::const_iterator it2=(*iter).second.begin();
图片 48
图片 49        for (;it2<(*iter).second.end();it2++)
图片 50        {
图片 51            //cout<<(*it2).c_str()<<endl;
图片 52            cout<<“333″<<endl;
图片 53        }
图片 54*/
图片 55
图片 56    
图片 57
图片 58    system(“pause”);
图片 59    return 0;
图片 60}
图片 61

  1. #include <gtkmm.h>   
  2. #include <glibmm.h>   
  3. #include <giomm.h>   
  4. #include <iostream>   
  5. #include <string>   
  6. #include <vector>   
  7. using namespace Gtk;   
  8. using namespace Glib;   
  9. using namespace std;   
  10. void EnumDir(string rootpath,vector<Glib::ustring>& vString)
      
  11. {   
  12.     Glib::Dir dirs(rootpath);   
  13.     std::list<std::string> entries (dirs.begin(), dirs.end());
      
  14.     for(std::list<std::string>::iterator  dirItr=entries.begin();dirItr!=entries.end();dirItr++)
      
  15.     {   
  16.         //使用流输出Glib::ustring一定要.c_str()或.raw()
      
  17.         //不然可提示:”terminate called after throwing an instance of ‘Glib::ConvertError'”.
      
  18.         Glib::ustring fullpath=rootpath+”/”+*dirItr;   
  19.         //cout<<fullpath.c_str()<<“——–“<<endl;
      
  20.         //cout<<fullpath.raw()<<“#######”<<endl;
      
  21.         vString.push_back(fullpath);   
  22.         try  
  23.         {   
  24.             //Glib::file_test(fullpath,Glib::FILE_TEST_IS_DIR | Glib::FILE_TEST_EXISTS)
      
  25.             //上述表达式表示:如果fullpath为目录或文件存在均返回真
      
  26.             //Glib::file_test(fullpath,Glib::FILE_TEST_EXISTS & Glib::FILE_TEST_IS_DIR)
      
  27.             //上述表达式表示:如果fullpath为目录且目录存在才返回真,还过这样写没必要,Glib::FILE_TEST_IS_DIR
      
  28.            if (Glib::file_test(fullpath,Glib::FILE_TEST_IS_DIR))
      
  29.             {   
  30.                 EnumDir(fullpath,vString);   
  31.             }   
  32.         }   
  33.         catch(Glib::FileError er)
      
  34.         {   
  35.             cout<<“Error:”<<fullpath.c_str()<<“:”<<er.what().c_str() <<endl;   
  36.         }   
  37.     }   
  38. }   
  39. int main(int argc,char* argv[])   
  40. {   
  41.     vector<Glib::ustring> files;   
  42.     EnumDir(“/home/yanxiang/桌面”,files);   
  43.     for(vector<Glib::ustring>::iterator itr=files.begin();itr!=files.end();itr++)
      
  44.     {   
  45.         cout<<(*itr).c_str()<<“********”<<endl;   
  46.     }   
  47.     return 0;   
  48. }  

相关文章