计算特定的元素数量

wil*_*924 2 c++ arrays count

例如,如果我有一个包含5个输入元素的数组,那么如果已经在变量中建立了该值,我将如何计算输入特定值的次数.

INPUT:
4
4
4
1
2
Run Code Online (Sandbox Code Playgroud)

如果click定义为4那么我如何计算click数组中使用了多少次?希望这是有道理的.谢谢

Oli*_*rth 15

正如您已将问题标记为C++一样,这是使用STL的正确C++答案.

int num = std::count(&array[0], &array[5], click);
Run Code Online (Sandbox Code Playgroud)

请参见http://en.cppreference.com/w/cpp/algorithm/count

  • 我同意Konrad,虽然做'array + 5`是完全没问题的,做`array [5]`不是,即使它只是应用地址运算符来获得等价物.在大多数情况下,编译器会优化它(`&*(array + 5)`将被转换为`array + 5`),编译器会产生某种预期的未定义行为,但它仍然是未定义的行为.再举一个例子,如果数组包含用户定义的类型`T`,而不是`int`s,它可能会在不是`T`的内存区域上重载`T :: operator&`.该标准在这里没有例外,它是UB. (5认同)
  • @Konrad,@ Nawaz,@ AAT,@ David,@ sbi:为了正式讨论这个问题,我在这个主题上提出了一个问题:http://stackoverflow.com/questions/5975586/is-arrayarray-length-valid- C-或-C.不好了!删除!这是http://stackoverflow.com/questions/988158的副本,似乎表明**是有效的. (3认同)
  • 嗯.`&array [5]`实际上有效吗?我知道引用和使用address-of会导致未定义的行为(例如,`&(*(array + 5))`). (2认同)
  • @Oli:你为什么不使用`array + 5`而不是`&array [5]`?ie ...`int num = std :: count(array,array + 5,click);` (2认同)