C++
是否有更有效的方式来计算string
中的字符数,其整数ASCII
值高于某个截止值,而不是评估一个char
string
在一个循环中整个X = {X_1, X_2, X_3, X_4, X_5, X_6, X_7};
Y = Y;
?
答案 0 :(得分:3)
正如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; } );
答案 1 :(得分:1)
你可以并行化(线程)或向量化(SSE向量指令),但是在优化最大化的情况下,一些编译器会为你渲染一个这样的简单检查循环,因此不需要显式向量化。
虽然节省的费用可能很小;对于一个这么简单的任务,要么字符串足够小,以至于优化不会有帮助/重要,或者你很可能是内存带宽限制; CPU可以通过像这样的字符串来快速搅拌。
那就是说,没有理由去打扰。 std::countif
会生成简单的代码,因此,除非您(通过分析)证明代码太慢,否则只需使用它:
int num_above_a = std::count_if(v.begin(), v.end(), [](unsigned char c){return c > 'a';})