c++ - int 数组但索引是字符?

标签 c++ algorithm hash

我很困惑,当索引是字符时,怎么可能有一个整数数组? 另一个困惑是这一行

if(i + 1 < N && nums[s[i+1]] > nums[s[i]])

字符串是否转换为整数,然后映射到 nums 数组,类似于将其散列到索引?`

 int romanToInt(string s) {
            const int N = s.length();
            int nums[128];
            nums['I'] = 1;
            nums['V'] = 5;
            nums['X'] = 10;
            nums['L'] = 50;
            nums['C'] = 100;
            nums['D'] = 500;
            nums['M'] = 1000;
            int result = 0;
            for(int i = 0; i < N; ++i)
            {
                if(i + 1 < N && nums[s[i+1]] > nums[s[i]])
                    result -=  nums[s[i]]; 
                else
                    result += nums[s[i]];
            }
            return result;
        }

最佳答案

当在算术表达式中使用小于 int 类型的值时(例如作为数组索引运算符的运算符),它是 promotedint

但请注意,数组元素类型和索引类型并不真正相关。

关于c++ - int 数组但索引是字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603221/

相关文章:

c# - C++ AMP计算与WPF渲染显卡双用性能

Javascript 表格根据值绘制行

c++ - 是否有必要在数组收缩时删除元素?

c++ - OpenCV cvtColor HSV2RGB 断言

mysql - 学校网站SQL设计

python - 如何计算不同基数中数字的位数?

600M 句子的 Java 哈希字符串

java - 将键值对添加到 hashMap 时,为什么 Java 会更改 hashMaps 的 hashCode?

java - 不同平台中相同的哈希+加密生成不同的值

c++ - boost::lambda 中 boost::bind 的嵌套用法不起作用