是否有另一种方法可以在不使用if语句的情况下有条件地增加数组值?C++

Jaw*_*s88 -3 c++ arrays loops

如果有一个数组,

int amounts[26] = { 0, 0, 0, ...};
Run Code Online (Sandbox Code Playgroud)

我想阵列的每个数字代表一个不同的串的量,使得amounts[0] = amount;'a'的被给定的字符串中发现,反正是有递增的每个值,而无需使用if语句?

Psuedocode示例:

int amounts[26] = { 0, 0, 0, ...}; 
string word = "blahblah";
loop here to check and increment amounts[0] based on amount of 'a's in string
repeat loop for each letter in word.`
Run Code Online (Sandbox Code Playgroud)

在循环结束时,根据字符串字,数量应如下所示:

amounts[0] = 2 ('a')
amounts[1] = 2  ('b')
amounts[2] = 0  ('c')
// etc
Run Code Online (Sandbox Code Playgroud)

小智 5

举个例子,假设整个字符串是小写且有效字符,那么就有一个相当简单的解决方案(也就是说,你处理验证)

for (int i = 0; i < word.size(); i++) {
    amounts[word[i]-'a']++; // you can also do a pre-increment if you want
}
Run Code Online (Sandbox Code Playgroud)

  • 不要这不便携.其中一个字符集C++需要支持([EBCDIC](https://en.wikipedia.org/wiki/EBCDIC))不会将`a - z`映射到连续范围. (2认同)