计算一个整数截断符上面有多少个字符
Count how many characters above an integer cutoff
在C++
中是否有一种更有效的方法来计算string
中其整数ASCII
值高于某个截止值的字符数,而不是在整个string
的循环中一次评估一个char
?
正如drescherjm所说,您需要的是std::count_if
。例如,查找ASCII值大于'3'的所有字符:
std::string s = "12345";
const char value = '3';
int count = std::count_if(s.begin(), s.end(),
[](const char& a) { return a > value; } );
你可以并行化(线程)或向量化(SSE矢量指令),我猜,虽然优化最大化,一些编译器会向量化一个简单的检查循环,像这样,所以显式向量化是不需要的。
节省的可能很小;对于这么简单的任务,要么字符串足够小,优化没有帮助/重要,要么你可能是内存带宽限制;CPU可以快速处理这样的字符串
也就是说,没有真正的理由去麻烦。std::countif
将使代码变得简单,所以除非您已经证明(通过分析)代码太慢,否则就使用它:
int num_above_a = std::count_if(v.begin(), v.end(), [](unsigned char c){return c > 'a';})
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 如何检查一个c++字符串中有多少相同的字符/数字
- 当我们不使用空字符显式初始化字符数组时,字符串的长度是多少?
- c++中无符号字符b[2]的初始值是多少
- JNI 中常量字符* 的寿命是多少?
- 在计算使用了多少个数组索引的同时,如何填充一个来自用户输入的字符的数组?(使用cin.get)
- 宽字符中原子字符串的最大长度是多少,255 或 127
- C++ 中有多少个方法逐个字符读取字符串,以对每个字符执行所需的操作
- 如何将特定数量的字符转换为大写或小写,并计算单词有多少个大写和小写字母
- 2 字节可以容纳多少个字符
- 字符串需要多少字节?一个字符
- 在文本编辑程序的正常流程中,我应该更新多少字符?
- 用字符数组实现BigInteger的上限是多少?
- 计算一个整数截断符上面有多少个字符
- c++中可以作为输入的字符数组的最大长度是多少?
- C++(使用 <windows.h> 的串行通信) - 我如何事先知道 ReadFile() 方法将读取多少个字符