在cocoa中使用C++STL 链表

  1. 在cocoa中使用C++STL 链表
  2. 1>.把“*.m”文件重命名为“*.mm”。
  3. 2>.在.mm文件中包含头文件:
  4. #include <list> 
  5. using namespace std;
  6. 3>.定义结构
  7. typedef struct MSUsb_mountInfo
  8. {
  9.   char          cVolumePath[MAX_CHARLEN];           
  10.   uint32_t      cVolumeByteLen;                 
  11.   char      cDiskID[MAX_CHARLEN];
  12.   uint32_t  cDiskIDLen;                 
  13. }mountInfo;
  14. //usb pid, vid, mount disk information 
  15. typedef struct MStorageDeviceInfo // __MS_USBInformation 
  16. {
  17.     uintptr_t               VendorID;                       //vendor id 
  18.     uintptr_t               ProductID;                      //product id 
  19.     uintptr_t               bcdDevice;                      //device version number 
  20.     
  21.     uintptr_t               nMountNumber;                   //挂载分区的个数 
  22.     mountInfo               szMount[40];                    //最多挂载20个分区 
  23.     
  24. /*  bool operator == (const MStorageDeviceInfo & rhs)
  25.     {   
  26.         if(VendorID==rhs.VendorID && ProductID==rhs.ProductID && bcdDevice == rhs.bcdDevice) 
  27.         {
  28.             return true;
  29.         }
  30.         else
  31.             return false;
  32.     }*/
  33. };
  34. 4>.使用链表:  
  35. //使用c++ 炼表 
  36. typedef list<MStorageDeviceInfo> ListMStorageDeviceInfo;
  37. ListMStorageDeviceInfo g_msListDev;
  38. ListMStorageDeviceInfo g_interListDev;
  39. 5>.添加节点:
  40. MStorageDeviceInfo dev;
  41.  dev.nMountNumber = 0;
  42. g_msListDev.insert(g_msListDev.end(), dev);
  43. 6>.删除节点:
  44. int ms_DeleteListNoDiffRecorded(
  45.                              long vendorID,
  46.                              long productID,
  47.                              long versionNumber,
  48.                              void *param
  49. )
  50. {
  51.     ListMStorageDeviceInfo *plist= (ListMStorageDeviceInfo*)param;
  52.     if(plist->empty())
  53.     {
  54.         //ps is empty  
  55.         return 0;
  56.     }
  57.     ListMStorageDeviceInfo::iterator ites;
  58.     for(ites = plist->begin(); ites != plist->end();)
  59.     {
  60.         if((*ites).VendorID == vendorID 
  61.            (*ites).ProductID == productID 
  62.            (*ites).bcdDevice == versionNumber)
  63.         {
  64.             ites = plist->erase(ites);   //删除节点  
  65.             continue;
  66.         }
  67.         ites ++;
  68.     }
  69.     return 0;
  70. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值