使用map后使用char作为数组索引

时间:2014-11-19 14:18:48

标签: c++ arrays string map

我试图在映射后使用字符作为整数数组的索引。问题是每当我尝试使用char类型的变量(作为array [char])访问数组时,而不是使用数组[“],我从编译器得到错误。我想知道是否有必要使用常量类型映射。 这是我的代码。

        int count=0;
        int length=strlen(word);
        std::map<std::string, int, std::less<std::string> >  alpha;
        alpha["X"]=1;
        alpha["Y"]=2;
        alpha["Z"]=3;
        char temp;
        for(int i=0;i<length;i++)
        {
        temp=word[i];
        count=alpha[temp];
        }

错误:

错误:用户定义的从'char'到'std :: map,int,std :: less&gt;的转换无效&GT; ::为key_type&安培;&安培; {aka std :: basic_string&amp;&amp;}'[-fpermissive] 计数=阿尔法[温度];

错误:初始化'std :: basic_string&lt; _CharT,_Traits,_Alloc&gt; :: basic_string(const _CharT *,const _Alloc&amp;)的参数1 [与_CharT = char; _Traits = std :: char_traits; _Alloc = std :: allocator]'[-fpermissive] basic_string(const _CharT * __,const _Alloc&amp; __a = _Alloc());

1 个答案:

答案 0 :(得分:0)

没有从charstd::string的自动转换。您有两种选择:

  • 明确转换,count=alpha[std::string(1,temp)];
  • temp的类型更改为std::string。您可以char分配给string,并且结果直观,因此其他代码可以正常工作

如果 all 地图键是单字符字符串,那么您可以考虑使用char作为键;甚至使用足够大的平面阵列来满足您可能需要的任何字符值。