能不能使用字符串数组作为map的索引呢?我有下面的一个结构TCameraInfo建立了一个map,想使用m_kdvPuid[MAXKDVPUIDLEN + 1]这个数组作为索引,可以吗? 当然我知道再使用一个容器存放我的puid作为索引可以解决。 
#define                MAXKDVPUIDLEN  32
#define                MAXDEVICENAME  127
typedef struct tagCameraInfo
 {
 char m_kdvPuid[MAXKDVPUIDLEN + 1]; //设备puid, 目前32位
 char m_deviceName[MAXDEVICENAME + 1]; //设备名称
 int m_mediaSourceType;         //设备媒体类型,目前由宏视定义
 int m_vChnl;                    //编码通道
 }TCameraInfo, *PTCameraInfo; 
typedef std::map< ?,  TCameraInfo> TCameraInfoMap;
typedef std::pair<? , TCameraInfo>  CameraInfo_pair;

解决方案 »

  1.   

    可以的。
    可以用char*指针作为key。
    stl的key的比较算法可以自己写替换的。
      

  2.   

    可以的.char[]是可进行比较的类型,作为索引是合法的,不过有点不合理.
      

  3.   

    重载<符号 做自己的判断。puid既然是32位,就转化为int比较一下
      

  4.   

    map的索引即键值没有类型限制,不过类型必须能自动比较大小
    如果是自定义的类型做key的话,则必须重载<号操作
      

  5.   

    可以用map<char*, ...> ..
    或者map<string, ...> ..