我试图在映射后使用字符作为整数数组的索引。问题是每当我尝试使用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());
答案 0 :(得分:0)
没有从char
到std::string
的自动转换。您有两种选择:
count=alpha[std::string(1,temp)];
temp
的类型更改为std::string
。您可以将char
分配给string
,并且结果直观,因此其他代码可以正常工作如果 all 地图键是单字符字符串,那么您可以考虑使用char
作为键;甚至使用足够大的平面阵列来满足您可能需要的任何字符值。